Update TODO
[profile/ivi/wayland.git] / TODO
diff --git a/TODO b/TODO
index b5d70bd..8cb8d34 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,50 @@
 Core wayland protocol
 
- - scanner: wl_* prefix removal: split it out into a namespace part so
-   we can call variables "surface" instead of "wl_surface"?
+ - Maybe try to make remote wayland actually happen, to see if there
+   is something in the protocol/architecture that makes it harder than
+   it should be.
 
- - Framebased input event delivery.
+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.
 
  - Protocol for arbitrating access to scanout buffers (physically
    contiguous memory).  When a client goes fullscreen (or ideally as
@@ -13,33 +54,13 @@ Core wayland protocol
    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, scanout flags
-   for fullscreen.
-
- - configure should provide dx_left, dx_right, dy_top, dy_bottom, or
-   dx, dy, width and height.
-
- - surface.set_grab_mode(GRAB_OWNER_EVENTS vs GRAB_SURFACE_EVENTS), to
-   make menus work right: click and drag in a menubar grabs the
-   pointer to the menubar (which we need for detecting motion into
-   another menu item), but we need events for the popup menu surface
-   as well.
-
- - The message format has to include information about number of fds
-   in the message so we can skip a message correctly.  Or we should
-   just give up on trying to recover from unknown messages.  We need
-   to make sure you never get a message from an interface you don't
-   know about (using per-client id space and subscribe) or include
-   information on number of fds, so marshalling logic can skip.
 
- - generate pointer_focus (and drag focus) on raise/lower, move
-   windows, all kinds of changes in surface stacking.
+Misc
 
  - 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)
@@ -54,39 +75,6 @@ Core wayland protocol
       cache.retire: buffer /* cache has stopped using buffer, please
                            * reupload whatever you had in that buffer */
 
- - DnD issues:
-
-    - Drag should not be tied to a source surface, just the client.
-      the grab will break if the surface goes away, but the wl_drag
-      struct doesn't need to hold on to the source surface.
-
-    - Root window must send NULL type (to decline drop) or
-      x-wayland/root-something type if the source offers that.  But
-      the target deletes the drag_offer object when drag.pointer_focus
-      leaves the surface...
-
-    - How do we animate the drag icon back to the drag origin in case
-      of a failed drag?  Client should set drag icon separately,
-      compositor can do it then.
-
-    - How to handle surfaces from clients that don't know about dnd or
-      don't care?  Maybe the dnd object should have a
-      dnd.register_surface() method so clients can opt-in the surfaces
-      that will participate in dnd.  Or just assume client is not
-      participating until we receive an accept request.
-
-    - Selection/copy+paste issues: is it sufficient to only introduce
-      the selection offer when a client receives kb focus?  Or maybe
-      it is actually a security feature?  Clipboard manager in server
-      for retained selections?
-
- - 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
@@ -97,59 +85,6 @@ Core wayland protocol
    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
-
- - drm bo access control, authentication, flink_to
-
- - Add protocol to let applications specify the effective/logical
-   surface rectangle, that is, the edge of the window, ignoring drop
-   shadows and other padding.  The compositor needs this for snapping
-   and constraining window motion.  Also, maybe communicate the opaque
-   region of the window (or just a conservative, simple estimate), to
-   let the compositor reduce overdraw.
-
- - Protocol for specifying title bar rectangle (for moving
-   unresponsive apps) and a rectangle for the close button (for
-   detecting ignored close clicks).
-
- - multi gpu, needs queue and seqno to wait on in requests
-
- - 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
 
@@ -170,15 +105,6 @@ Clients and ports
  - SDL port, bnf has work in progress here:
    http://cgit.freedesktop.org/~bnf/sdl-wayland/
 
- - libva + eglimage + kms integration
-
- - X on Wayland
-
-    - map multiple wayland input devices to MPX in Xorg.
-
-    - rootless; avoid allocating and setting the front buffer, draw
-      window decorations in the X server (!), how to map input?
-
 
 Ideas