summaryrefslogtreecommitdiffstats
path: root/protocol/wayland.xml
Commit message (Collapse)AuthorAgeFilesLines
...
* protocol: say update instead of repaintPekka Paalanen2012-10-161-2/+2
| | | | | | | | wl_surface.commit itself does not force any repainting unless there is damage, so change the wording to not imply repainting. Reported-by: John Kåre Alsaker <john.kare.alsaker@gmail.com> Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: Clarify pointer axis eventJonas Ådahl2012-10-161-4/+16
| | | | | | Pointer axis events are in the same coordinate space as motion events. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
* protocol: Clarify pointer axis eventJonas Ådahl2012-10-151-1/+4
| | | | | | Pointer axis events are in the same coordinate space as motion events. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
* protocol: clarify multiple wl_surface.attachPekka Paalanen2012-10-111-1/+3
| | | | | | | | Explicitly say what happens with the wl_buffer.release event, if you attach several wl_buffers without a commit in between. Reported-by: David Herrmann <dh.herrmann@googlemail.com> Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: fix clarification of input region on drags and pointersPekka Paalanen2012-10-111-7/+11
| | | | | | | | | | | | | | | | | | | | | The previous clarification did not follow the current implementation in Weston, where when a surface stops being a cursor or an icon, it becomes a plain unmapped surface again. Rewrite the related paragraphs, and fix some typos while at it. For start drag, make it explicit of which surface argument we are talking about. v2: Make the input region undefined when the use ends. Most likely no-one will re-use these surfaces for anything else than the same use case, so leave some slack for the implementations to avoid useless work on resetting the regions. Reported-by: Ander Conselvan de Oliveira <conselvan2@gmail.com> Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: elaborate on wl_bufferPekka Paalanen2012-10-101-1/+17
| | | | | | | Spell out exactly when a client may re-use a wl_buffer or its backing storage. Mention the optimization for GL-compositor with wl_shm-clients. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: wl_surface.frame needs wl_surface.commitPekka Paalanen2012-10-101-1/+11
| | | | | | | Clarify, when frame request takes effect. Explain when to send/receive the callback. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: clarify input region on drags and pointersPekka Paalanen2012-10-101-4/+16
| | | | | | | Drag icon and cursor surfaces must never receive input, so their input region is always empty. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* protocol: double-buffered state for wl_surfacePekka Paalanen2012-10-101-23/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change breaks the protocol. The current protocol is racy in that updates to surface content and surface state (e.g. damage, input and opaque regions) are not guaranteed to happen at the same time. Due to protocol buffering and handling practices, the issues are very hard to trigger. Committing damage to a surface at arbitrary times makes it hard to track when the wl_buffer is being read by the server, and when it is safe to overwrite (the case of wl_shm with a single buffer reused constantly). This protocol change introduces the concept of double-buffered state. Such state is accumulated and cached in the server, unused, until the final commit request. The surface will receive its new content and apply its new state atomically. A wl_surface.commit request is added to the protocol. This is thought to be more clear, than having wl_surface.attach committing implicitly, and then having another request to commit without attaching, as would be required for a GL app that wants to change e.g. input region without redrawing. When these changes are implemented, clients do not have to worry about ordering damage vs. input region vs. attach vs. ... anymore. Clients set the state in any order they want, and kick it all in with a commit. The interactions between wl_surface.attach, (wl_surface.commit,) wl_buffer.release, and wl_buffer.destroy have been undocumented. Only careful inspection of the compositor code has told when a wl_buffer is free for re-use, especially for wl_shm and wrt. wl_surface.damage. Try to clarify how it all should work, and what happens if the wl_buffer gets destroyed. An additional minor fix: allow NULL argument to wl_surface.set_opaque_region. The wording in the documentation already implied that a nil region is allowed. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
* Split the global registry into its own wl_registry objectKristian Høgsberg2012-10-101-15/+22
| | | | | | | | | | | | | | | | | | | | | The only way to make the global object listener interface thread safe is to make it its own interface and make different listeners different wl_proxies. The core of the problem is the callback we do when a global show up or disappears, which we can't do with a lock held. On the other hand we can't iterate the global list or the listener list without a lock held as new globals or listeners may come and go during the iteration. Making a copy of the list under the lock and then iterating after dropping the lock wont work either. In case of the listener list, once we drop the lock another thread may unregister a listener and destroy the callbackk data, which means that when we eventually call that listener we'll pass it free memory and break everything. We did already solve the thread-safe callback problem, however. It's what we do for all protocol events. So we can just make the global registry functionality its own new interface and give each thread its own proxy. That way, the thread will do its own callbacks (with no locks held) and destroy the proxy when it's no longer interested in wl_registry events.
* scanner: Send interface name and version for types new_id argsKristian Høgsberg2012-10-101-4/+2
| | | | | | | This makes the scanner generate the code and meta data to send the interface name and version when we pass a typeless new_id. This way, the generic factory mechanism provided by wl_display.bind can be provided by any interface.
* wayland: Fix typosTiago Vignatti2012-10-091-3/+3
| | | | | | | | | My vim spell checker is able to find typos of xml files after adding "syn spell toplevel" to ~/.vim/after/syntax/xml.vim aah, and Wayland is capital letter :) Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
* protocol: Fix typoTiago Vignatti2012-09-251-1/+1
| | | | Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
* Fix typo (ratio, not ration)Diego Viola2012-09-131-1/+1
| | | | Signed-off-by: Diego Viola <diego.viola@gmail.com>
* protocol: Fix typo.Scott Moreau2012-08-161-1/+1
|
* protocol: Remove "repeat" from "key_state"Andre Heider2012-07-311-2/+0
| | | | This is unused and apparently was never implemented.
* protocol: Add transform argument to wl_output.geometry eventKristian Høgsberg2012-07-221-0/+27
|
* doc: fix some typos in documentationMartin Olsson2012-07-091-2/+2
|
* protocol: Add missing allow-null to data_device.enter data_offer fieldAnder Conselvan de Oliveira2012-07-091-1/+1
| | | | Fixes bug 51889.
* protocol: Add a couple of missing allow-null annotationsKristian Høgsberg2012-07-021-2/+2
| | | | | wl_data_device.set_selection() allows NULL to withdraw the previously set selection and wl_surface.attach() allows a NULL buffer to hide the surface.
* protocol: Explicitly mark requests which allow null argumentsChristopher James Halse Rogers2012-07-021-9/+9
| | | | Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
* protocol: Change wording of pointer.set_cursor()Ander Conselvan de Oliveira2012-06-281-2/+3
| | | | | | Change the description of pointer.set_cursor() so that a client without pointer focus but that currently owns the pointer surface can update the hotspot using it.
* wl_shell: Don't require that parent surfaces are wl_shell_surfacesKristian Høgsberg2012-06-271-2/+2
| | | | | | | The set_transient and set_popup requests take a wl_shell_surface as the parent surface argument. We don't need the parent surface to be a shell surface and this restricts the types of surfaces we can use the transient and popup surface types on.
* protocol: replace pointer.attach with pointer.set_cursorAnder Conselvan de Oliveira2012-06-151-6/+21
|
* Add wl_keyboard::keymap eventDaniel Stone2012-06-011-0/+18
| | | | | | | | With this event, the compositor generates one canonical keymap for all clients, and then sends an mmap()able fd over the wire, rather than all the clients generating possibly disparate keymaps. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* Convert wl_pointer::axis to fixedDaniel Stone2012-05-311-1/+1
| | | | | | Which allows for smooth scrolling, among other things. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* Add key_state and button_state enumsDaniel Stone2012-05-311-0/+19
| | | | | | Rather than hardcoding 0 and 1 everywhere. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* wl_keyboard: Add modifier eventDaniel Stone2012-05-311-0/+13
| | | | | | | | | | This event sends the current keyboard modifier/group state from the compositor to the client, allowing all clients to have a consistent view of the keyboard state (e.g. current layout, Caps Lock, et al). It should be sent after a keyboard enter event, and also immediately after any key event which changes the modifier state. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* data-device: implement drags with no data source for self-dndAnder Conselvan de Oliveira2012-05-291-9/+17
| | | | | | Properly handle a drag with no data source, i.e., don't crash and send events only to the client that initiated the drag. This way a client can do self drag and drop without offering anything to other clients.
* shm: Add request for resizing poolsAnder Conselvan de Oliveira2012-05-221-0/+10
|
* protocol: use transient flags for activate or not surfacesTiago Vignatti2012-05-211-0/+4
| | | | Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
* Convert wl_input_device to wl_seat (and friends)Daniel Stone2012-05-161-45/+100
| | | | | | | | | | | | | wl_input_device has been both renamed and split. wl_seat is now a virtual object representing a group of logically related input devices with related focus. It now only generates one event: to let clients know that it has new capabilities. It takes requests which hand back objects for the wl_pointer, wl_keyboard and wl_touch interfaces it exposes which all provide the old input interface, just under different names. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* protocol: Specify that the fullscreen framerate parameter is also mHzKristian Høgsberg2012-05-101-1/+2
|
* protocol: Back out accidentally committed wl_seat changesKristian Høgsberg2012-05-101-62/+38
|
* protocol: Add documentation for wl_outputKristian Høgsberg2012-05-101-13/+31
|
* TODO: More updatesKristian Høgsberg2012-05-091-38/+62
|
* Input: Convert pointer co-ordinates to signed_24_8Daniel Stone2012-05-081-12/+12
| | | | | | | This offers more precision when using devices like tablets, and also for transformed surfaces. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
* Use class_ instead of class in protocolKristian Høgsberg2012-05-031-1/+1
| | | | This way we can include the generated code from C++.
* Add shell_surface set_title and set_class requestsKristian Høgsberg2012-05-021-0/+16
|
* protocol: Move ping event down to other eventsKristian Høgsberg2012-05-011-8/+8
|
* Add wl_surface.enter and wl_surface.leave eventsCasey Dahlin2012-04-201-0/+18
| | | | | | | | | These events let us track when a surface enters or leaves the scanout region of an output. This way if a surface moves to another output and that output is on a different card, we can suggest the toolkit reallocate its buffers appropriately. Signed-off-by: Casey Dahlin <cdahlin@redhat.com>
* protocol: Add ping event and corresponding pong requestScott Moreau2012-04-191-0/+16
|
* Switch protocol to using serial numbers for ordering events and requestsKristian Høgsberg2012-04-111-15/+18
| | | | | | | | | | | | | | | | | | | | | | | The wayland protocol, as X, uses timestamps to match up certain requests with input events. The problem is that sometimes we need to send out an event that doesn't have a corresponding timestamped input event. For example, the pointer focus surface goes away and new surface needs to receive a pointer enter event. These events are normally timestamped with the evdev event timestamp, but in this case, we don't have a evdev timestamp. So we have to go to gettimeofday (or clock_gettime()) and then we don't know if it's coming from the same time source etc. However for all these cases we don't need a real time timestamp, we just need a serial number that encodes the order of events inside the server. So we introduce a serial number mechanism that we can use to order events. We still need real-time timestamps for actual input device events (motion, buttons, keys, touch), to be able to reason about double-click speed and movement speed so events that correspond to user input carry both a serial number and a timestamp. The serial number also give us a mechanism to key together events that are "logically the same" such as a unicode event and a keycode event, or a motion event and a relative event from a raw device.
* shm: Allocate shm buffers through new wl_shm_pool interfaceKristian Høgsberg2012-04-031-13/+48
| | | | | | | | | | | | | There's a big cost to setting up and tearing down a mmap and faulting in the pages to back it. For cases where we're continuously reallocating shm wl_buffers (resizing a surface, typically) it is a big performance improvement to be able to reuse a mmap area. This change makes the shm buffer allocation a two step process: first allocate a wl_shm_pool, then allocate a buffer from the pool. The wl_shm_pool encapsulate the shared memory pool, and lets clients allocate wl_buffers backed by chunks of that memory. Buffers are allocated at an offset into the pool, so it's possible to create multiple buffers from one pool, for example for icons or cursor images.
* shm: Fix stride signedness in protocolKristian Høgsberg2012-03-301-1/+1
| | | | Make stride argument of wl_shm.create_buffer a signed integer.
* Remove wl_buffer.damage and simplify shm implementationKristian Høgsberg2012-03-261-14/+0
|
* Add protocol for axis eventsScott Moreau2012-03-221-0/+16
|
* protocol: Clarify the documentation for the fullscreen protocolRob Bradford2012-02-291-19/+34
|
* protocol: fix missing hyphenation for "client-created"Peter Hutterer2012-02-231-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add wl_region and surface requests to set opaque and input regionsKristian Høgsberg2012-02-231-0/+76
|