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