| 
									
										
										
										
											2010-07-07 09:37:41 -04:00
										 |  |  | Core wayland protocol | 
					
						
							| 
									
										
										
										
											2009-09-30 23:14:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-20 12:32:51 -04:00
										 |  |  |  - Maybe try to make remote wayland actually happen, to see if there | 
					
						
							| 
									
										
										
										
											2012-07-09 18:22:05 +02:00
										 |  |  |    is something in the protocol/architecture that makes it harder than | 
					
						
							| 
									
										
										
										
											2012-03-20 12:32:51 -04:00
										 |  |  |    it should be. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ICCCM | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - mime-type guidelines for data_source (ie, both dnd and selection): | 
					
						
							|  |  |  |    recommended types for text or images, types that a clipboard | 
					
						
							|  |  |  |    manager must support, mime-types must be listed in preferred order | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - we need a "no kb focus please" mechanism.  Or should this be | 
					
						
							|  |  |  |    implicit in a specific surface type? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EWMH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - configure should provide dx_left, dx_right, dy_top, dy_bottom, or | 
					
						
							|  |  |  |    dx, dy, width and height. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - move to workspace, keep on top, on all workspaces, minimize etc | 
					
						
							|  |  |  |    requests for implementing client side window menu? or just make a | 
					
						
							|  |  |  |    "show window menu" request to let the compositor display and manage | 
					
						
							|  |  |  |    a popup window? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - window move and resize functionality for kb and touch. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - Protocol for specifying title bar rectangle (for moving | 
					
						
							|  |  |  |    unresponsive apps).  Rectangle for close button, so we can popup | 
					
						
							|  |  |  |    force-close dialog if application doesn't respond to ping event | 
					
						
							|  |  |  |    when user clicks there.  We could use the region mechanism here | 
					
						
							|  |  |  |    too. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - popup placement protocol logic. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - subsurface mechanism.  we need this for cases where we would use an | 
					
						
							|  |  |  |    X subwindow for gl or video other different visual type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EGL/gbm | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - Land Robert Braggs EGL extensions: frame age, swap with damage | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  - Make it possible to share buffers from compositor to clients. | 
					
						
							|  |  |  |    Tricky part here is how to indicate to EGL on the server side that | 
					
						
							|  |  |  |    it should make an EGLImage available to a client.  We'll need a | 
					
						
							|  |  |  |    "create a wl_buffer for this EGLImage for this client" kind of | 
					
						
							|  |  |  |    entry point. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |  - 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-21 20:53:37 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-20 12:32:51 -04:00
										 |  |  | Misc | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-29 00:02:58 -04:00
										 |  |  |  - glyph cache | 
					
						
							| 
									
										
										
										
											2010-06-08 15:41:20 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-29 16:50:02 -04:00
										 |  |  |     - Needs a mechanism to pass buffers to client. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 13:44:37 -04:00
										 |  |  |       buffer = drm.create_buffer(); /* buffer with stuff in it */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 21:17:40 -04:00
										 |  |  |       cache.upload(buffer, x, y, width, height, int hash) | 
					
						
							| 
									
										
										
										
											2010-09-14 13:44:37 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |       drm.buffer: id, name, stride etc /* event to announce cache buffer */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 21:17:40 -04:00
										 |  |  |       cache.image: hash, buffer, x, y, stride /* event to announce | 
					
						
							| 
									
										
										
										
											2010-09-14 13:44:37 -04:00
										 |  |  | 					      * location in cache */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 21:17:40 -04:00
										 |  |  |       cache.reject: hash   /* no upload for you! */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 13:44:37 -04:00
										 |  |  |       cache.retire: buffer /* cache has stopped using buffer, please | 
					
						
							|  |  |  | 			    * reupload whatever you had in that buffer */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |  - 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 | 
					
						
							| 
									
										
										
										
											2010-07-07 09:37:41 -04:00
										 |  |  |    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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-21 20:53:37 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-07 09:37:41 -04:00
										 |  |  | Clients and ports | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |  - 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... | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - dnd, copy-paste | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |  - Investigate DirectFB on Wayland (or is that Wayland on DirectFB?) | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  | 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: | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |      interface "settings": | 
					
						
							|  |  |  |        event int_value(string name, int value) | 
					
						
							|  |  |  |        event string_value(string name, string value) | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |    but maybe it's better to just require that clients get that from | 
					
						
							|  |  |  |    somewhere else (gconf/dbus). | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  | Crazy ideas | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |  - 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: | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - ioctl(wayland_fd, "surface_attach to object 5 should do a kms page | 
					
						
							|  |  |  | 			 flip on ctrc 2"); | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - what about multiple crtcs? what about frame event for other | 
					
						
							|  |  |  |       clients? | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - forward these input devices to the client | 
					
						
							| 
									
										
										
										
											2009-02-05 22:59:16 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - "scancode 124 pressed or released with scan codes 18,22 and 30 | 
					
						
							|  |  |  |        held down gives control back to userspace wayland. | 
					
						
							| 
									
										
										
										
											2009-09-30 23:14:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - 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? | 
					
						
							| 
									
										
										
										
											2009-09-30 23:14:19 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-10 22:56:01 -04:00
										 |  |  |     - Probably not worth it. |