Update TODO
[profile/ivi/wayland.git] / TODO
1 Core wayland protocol
2
3  - scanner: wl_* prefix removal: split it out into a namespace part so
4    we can call variables "surface" instead of "wl_surface"?
5
6  - Framebased input event delivery.
7
8  - Protocol for arbitrating access to scanout buffers (physically
9    contiguous memory).  When a client goes fullscreen (or ideally as
10    the compositor starts the animation that will make it fullscreen)
11    we send a "give up your scanout buffer" to the current fullscreen
12    client (if any) and when the client acks that we send a "try to
13    allocate a scanout buffer now" event to the fullscreen-to-be
14    client.
15
16  - Next steps based on EGL_WL_bind_display: create EGLImageKHR from
17    shm buffers? async auth in the implementation of the extension?
18
19  - wayland-egl: lazy-copy-back swapbuffer, sub-window.
20
21  - configure should provide dx_left, dx_right, dy_top, dy_bottom, or
22    dx, dy, width and height.
23
24  - glyph cache
25
26     - Needs a mechanism to pass buffers to client.
27
28       buffer = drm.create_buffer(); /* buffer with stuff in it */
29
30       cache.upload(buffer, x, y, width, height, int hash)
31
32       drm.buffer: id, name, stride etc /* event to announce cache buffer */
33
34       cache.image: hash, buffer, x, y, stride /* event to announce
35                                               * location in cache */
36
37       cache.reject: hash   /* no upload for you! */
38
39       cache.retire: buffer /* cache has stopped using buffer, please
40                             * reupload whatever you had in that buffer */
41
42  - Pointer image issue:
43
44     - A direct touch input device (eg touch screen) doesn't have a
45       pointer; indicate that somehow.
46
47     - Cursor themes, tie in with glyph/image cache.
48
49  - A "please suspend" event from the compositor, to indicate to an
50    application that it's no longer visible/active.  Or maybe discard
51    buffer, as in "wayland discarded your buffer, it's no longer
52    visible, you can stop updating it now.", reattach, as in "oh hey,
53    I'm about to show your buffer that I threw away, what was it
54    again?".  for wayland system compositor vt switcing, for example,
55    to be able to throw away the surfaces in the session we're
56    switching away from.  for minimized windows that we don't want live
57    thumb nails for. etc.
58
59  - Event when a surface moves from one output to another.
60
61  - input device discovery, hotplug
62
63     - Advertise axes as part of the discovery, use something like
64       "org.wayland.input.x" to identify the axes.
65
66     - keyboard state, layout events at connect time and when it
67       changes, keyboard leds
68
69     - relative events
70
71     - multi touch?
72
73     - synaptics, 3-button emulation, scim
74
75  - multi gpu, needs queue and seqno to wait on in requests
76
77 Destkop/EWMH type protocol
78
79  - Protocol for specifying title bar rectangle (for moving
80    unresponsive apps) and a rectangle for the close button (for
81    detecting ignored close clicks).
82
83 libxkbcommon
84
85   - pull in actions logic from xserver
86
87   - pull in keycode to keysym logic from libX11
88
89   - expose alloc functions in libxkbcommon, drop xserver funcs?
90
91   - pull the logic to write the xkb file from xkb_desc and names into
92     libxkbcommon and just build up the new xkb_desc instead of
93     dump+parse? (XkbWriteXKBKeymapForNames followed by
94     xkb_compile_keymap_from_string in XkbDDXLoadKeymapByNames)
95
96   - pull in keysym defs as XKB_KEY_BackSpace
97
98   - figure out what other X headers we can get rid of, make it not
99     need X at all (except when we gen the keysyms).
100
101   - Sort out namespace pollution (XkbFoo macros, atom funcs etc).
102
103   - Sort out 32 bit vmods and serialization
104
105
106 Clients and ports
107
108  - port gtk+
109
110     - draw window decorations in gtkwindow.c
111
112     - Details about pointer grabs. wayland doesn't have active grabs,
113       menus will behave subtly different.  Under X, clicking a menu
114       open grabs the pointer and clicking outside the window pops down
115       the menu and swallows the click.  without active grabs we can't
116       swallow the click.  I'm sure there much more...
117
118     - dnd, copy-paste
119
120  - Investigate DirectFB on Wayland (or is that Wayland on DirectFB?)
121
122  - SDL port, bnf has work in progress here:
123    http://cgit.freedesktop.org/~bnf/sdl-wayland/
124
125  - libva + eglimage + kms integration
126
127
128 Ideas
129
130  - A wayland settings protocol to tell clients about themes (icons,
131    cursors, widget themes), fonts details (family, hinting
132    preferences) etc.  Just send all settings at connect time, send
133    updates when a setting change.  Getting a little close to gconf
134    here, but could be pretty simple:
135
136      interface "settings":
137        event int_value(string name, int value)
138        event string_value(string name, string value)
139
140    but maybe it's better to just require that clients get that from
141    somewhere else (gconf/dbus).
142
143
144 Crazy ideas
145
146  - AF_WAYLAND - A new socket type.  Eliminate compositor context
147    switch by making kernel understand enough of wayland that it can
148    forward input events as wayland events and do page flipping in
149    response to surface_attach requests:
150
151     - ioctl(wayland_fd, "surface_attach to object 5 should do a kms page
152                          flip on ctrc 2");
153
154     - what about multiple crtcs? what about frame event for other
155       clients?
156
157     - forward these input devices to the client
158
159     - "scancode 124 pressed or released with scan codes 18,22 and 30
160        held down gives control back to userspace wayland.
161
162     - what about maintaining cursor position? what about pointer
163       acceleration?  maybe this only works in "client cursor mode",
164       where wayland hides the cursor and only sends relative events?
165       Solves the composited cursor problem.  How does X show its
166       cursor then?
167
168     - Probably not worth it.