169 lines
5.5 KiB
Plaintext
169 lines
5.5 KiB
Plaintext
Core wayland protocol
|
|
|
|
- scanner: wl_* prefix removal: split it out into a namespace part so
|
|
we can call variables "surface" instead of "wl_surface"?
|
|
|
|
- Framebased input event delivery.
|
|
|
|
- Protocol for arbitrating access to scanout buffers (physically
|
|
contiguous memory). When a client goes fullscreen (or ideally as
|
|
the compositor starts the animation that will make it fullscreen)
|
|
we send a "give up your scanout buffer" to the current fullscreen
|
|
client (if any) and when the client acks that we send a "try to
|
|
allocate a scanout buffer now" event to the fullscreen-to-be
|
|
client.
|
|
|
|
- Next steps based on EGL_WL_bind_display: create EGLImageKHR from
|
|
shm buffers? async auth in the implementation of the extension?
|
|
|
|
- wayland-egl: lazy-copy-back swapbuffer, sub-window.
|
|
|
|
- configure should provide dx_left, dx_right, dy_top, dy_bottom, or
|
|
dx, dy, width and height.
|
|
|
|
- glyph cache
|
|
|
|
- Needs a mechanism to pass buffers to client.
|
|
|
|
buffer = drm.create_buffer(); /* buffer with stuff in it */
|
|
|
|
cache.upload(buffer, x, y, width, height, int hash)
|
|
|
|
drm.buffer: id, name, stride etc /* event to announce cache buffer */
|
|
|
|
cache.image: hash, buffer, x, y, stride /* event to announce
|
|
* location in cache */
|
|
|
|
cache.reject: hash /* no upload for you! */
|
|
|
|
cache.retire: buffer /* cache has stopped using buffer, please
|
|
* reupload whatever you had in that buffer */
|
|
|
|
- Pointer image issue:
|
|
|
|
- A direct touch input device (eg touch screen) doesn't have a
|
|
pointer; indicate that somehow.
|
|
|
|
- Cursor themes, tie in with glyph/image cache.
|
|
|
|
- A "please suspend" event from the compositor, to indicate to an
|
|
application that it's no longer visible/active. Or maybe discard
|
|
buffer, as in "wayland discarded your buffer, it's no longer
|
|
visible, you can stop updating it now.", reattach, as in "oh hey,
|
|
I'm about to show your buffer that I threw away, what was it
|
|
again?". for wayland system compositor vt switcing, for example,
|
|
to be able to throw away the surfaces in the session we're
|
|
switching away from. for minimized windows that we don't want live
|
|
thumb nails for. etc.
|
|
|
|
- Event when a surface moves from one output to another.
|
|
|
|
- input device discovery, hotplug
|
|
|
|
- Advertise axes as part of the discovery, use something like
|
|
"org.wayland.input.x" to identify the axes.
|
|
|
|
- keyboard state, layout events at connect time and when it
|
|
changes, keyboard leds
|
|
|
|
- relative events
|
|
|
|
- multi touch?
|
|
|
|
- synaptics, 3-button emulation, scim
|
|
|
|
- multi gpu, needs queue and seqno to wait on in requests
|
|
|
|
Destkop/EWMH type protocol
|
|
|
|
- Protocol for specifying title bar rectangle (for moving
|
|
unresponsive apps) and a rectangle for the close button (for
|
|
detecting ignored close clicks).
|
|
|
|
libxkbcommon
|
|
|
|
- pull in actions logic from xserver
|
|
|
|
- pull in keycode to keysym logic from libX11
|
|
|
|
- expose alloc functions in libxkbcommon, drop xserver funcs?
|
|
|
|
- pull the logic to write the xkb file from xkb_desc and names into
|
|
libxkbcommon and just build up the new xkb_desc instead of
|
|
dump+parse? (XkbWriteXKBKeymapForNames followed by
|
|
xkb_compile_keymap_from_string in XkbDDXLoadKeymapByNames)
|
|
|
|
- pull in keysym defs as XKB_KEY_BackSpace
|
|
|
|
- figure out what other X headers we can get rid of, make it not
|
|
need X at all (except when we gen the keysyms).
|
|
|
|
- Sort out namespace pollution (XkbFoo macros, atom funcs etc).
|
|
|
|
- Sort out 32 bit vmods and serialization
|
|
|
|
|
|
Clients and ports
|
|
|
|
- port gtk+
|
|
|
|
- draw window decorations in gtkwindow.c
|
|
|
|
- Details about pointer grabs. wayland doesn't have active grabs,
|
|
menus will behave subtly different. Under X, clicking a menu
|
|
open grabs the pointer and clicking outside the window pops down
|
|
the menu and swallows the click. without active grabs we can't
|
|
swallow the click. I'm sure there much more...
|
|
|
|
- dnd, copy-paste
|
|
|
|
- Investigate DirectFB on Wayland (or is that Wayland on DirectFB?)
|
|
|
|
- SDL port, bnf has work in progress here:
|
|
http://cgit.freedesktop.org/~bnf/sdl-wayland/
|
|
|
|
- libva + eglimage + kms integration
|
|
|
|
|
|
Ideas
|
|
|
|
- A wayland settings protocol to tell clients about themes (icons,
|
|
cursors, widget themes), fonts details (family, hinting
|
|
preferences) etc. Just send all settings at connect time, send
|
|
updates when a setting change. Getting a little close to gconf
|
|
here, but could be pretty simple:
|
|
|
|
interface "settings":
|
|
event int_value(string name, int value)
|
|
event string_value(string name, string value)
|
|
|
|
but maybe it's better to just require that clients get that from
|
|
somewhere else (gconf/dbus).
|
|
|
|
|
|
Crazy ideas
|
|
|
|
- AF_WAYLAND - A new socket type. Eliminate compositor context
|
|
switch by making kernel understand enough of wayland that it can
|
|
forward input events as wayland events and do page flipping in
|
|
response to surface_attach requests:
|
|
|
|
- ioctl(wayland_fd, "surface_attach to object 5 should do a kms page
|
|
flip on ctrc 2");
|
|
|
|
- what about multiple crtcs? what about frame event for other
|
|
clients?
|
|
|
|
- forward these input devices to the client
|
|
|
|
- "scancode 124 pressed or released with scan codes 18,22 and 30
|
|
held down gives control back to userspace wayland.
|
|
|
|
- what about maintaining cursor position? what about pointer
|
|
acceleration? maybe this only works in "client cursor mode",
|
|
where wayland hides the cursor and only sends relative events?
|
|
Solves the composited cursor problem. How does X show its
|
|
cursor then?
|
|
|
|
- Probably not worth it.
|