summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* configure.ac: bump to version 1.10.0 for the official release1.10.01.10Bryce Harrington2016-02-161-2/+2
|
* connection: Don't add uninitialized memory as 4 byte alignment paddingJonas Ådahl2016-02-111-1/+1
| | | | | | | | | | | | | | | | | | | | When we are adding padding bytes making our wl_buffer buffer content 4 byte aligned, we are just moving the pointer. Since the buffer is allocated using plain malloc(), this means our padding bytes are effectively uninitialized data, which could be anything previously allocated in the server process. As we'll be sharing this buffer content with arbitrary clients, we are effectively sharing private memory with every client, and even though a well behaving client will discard any such memory, a malicious client may not. Therefor, to avoid any potential missuse of the uninitialized padding memory shared between the server and client, initialize the buffer content to 0, making the padding bytes always 0. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* configure.ac: bump to version 1.9.93 for the RC1 release1.9.93Bryce Harrington2016-02-091-1/+1
|
* cosmetic: add an space after ifSergi Granell2016-02-041-1/+1
|
* cosmetic: use tabs instead of spacesSergi Granell2016-02-041-1/+1
|
* scanner: Fix oddities in copyright printingDerek Foreman2016-02-041-6/+10
| | | | | | | | | | | | | | | | | | Some copyright strings could result in broken generated header files with unmatched */ This change: Runs the loop long enough so the copyright[i] == 0 test can actually happen. (if there was no \n no copyright text was printed, */ still was) Prints the opening /* even if there was whitespace at the start of the very first line. Only emits a */ if a /* was printed. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* configure.ac: bump to version 1.9.92 for the beta release1.9.92Bryce Harrington2016-02-021-1/+1
|
* scanner: Print filename on DTD validation errorJonas Ådahl2016-02-011-5/+10
| | | | | | | | | | | | Don't just print prefix the errors with "protocol", but the actual file name, if wayland-scanner was passed with the filename of the protocol file. If wayland-scanner is reading from stdin, errors will be prefixed with "<stdin>" instead of "protocol". Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: David Fort <contact@hardening-consulting.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* server: Fail to bind object when requested version is 0Derek Foreman2016-02-011-0/+5
| | | | | | | | | 0 is not a valid version number for registry bind requests, so let's check for it in registry_bind. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* cosmetic: return NULL instead of 0Marek Chalupa2016-02-011-1/+1
| | | | | | | we're returning a pointer Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* protocol: Add note about per version requirements to wl_data_device_managerJonas Ådahl2016-02-011-0/+5
| | | | | | | | | Add a note to the wl_data_device_manager global interface about the different requirements for operating the objects created from the bound global. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Carlos Garnacho <carlosg@gnome.org>
* server: Fix possible wl_display_add_socket_fd memleakSergi Granell2016-02-011-4/+5
| | | | | | If wl_event_loop_add_fd failed, the fail path didn't free the newly allocated struct wl_socket. Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* configure.ac: re-bump to version 1.9.91 for the alpha release1.9.91Bryce Harrington2016-01-191-2/+2
|
* server: Add an API to get the file descriptor for a clientSung-Jin Park2016-01-194-0/+47
| | | | | | | | | | | | | | | This adds an API to get the file descriptor for a client. The client file descriptor can be used for a wayland compositor to validate a request from a client if there are any additional information provided from the client's file descriptor. For instance, this will be helpful in some linux distributions, in which SELinux or SMACK is enabled. In those environments, each file (including socket) will have each security contexts in its inode as xattr member variable. A wayland compositor can validate a client request by getting the file descriptor of the client and by checking the security contexts associated with the file descriptor. Signed-off-by: Sung-Jin Park <input.hacker@gmail.com>
* configure.ac: bump to version 1.9.91 for the alpha releaseBryce Harrington2016-01-191-1/+1
|
* tests: Test proxy versionsDerek Foreman2016-01-191-9/+116
| | | | | | | | Add a test that confirms that proxy versions are always 0 for display and correct otherwise. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* Track protocol object versions inside wl_proxy.Jason Ekstrand2016-01-193-15/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This provides a standardized mechanism for tracking protocol object versions in client code. The wl_display object is created with version 1. Every time an object is created from within wl_registry_bind, it gets the bound version. Every other time an object is created, it simply inherits it's version from the parent object that created it. (comments and minor reformatting added by Derek Foreman <derekf@osg.samsung.com>) Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Second trivial commit squashed into this one: Authored by Derek Foreman <derekf@osg.samsung.com> Signed-off-by: Derek Foreman <derekf@osg.samsung.com> (it's literally one of code and a lot of comments) This sets wl_display's version (for proxy version query purposes) to 0. Any proxy created with unversioned API (this happens when a client compiled with old headers links against new wayland) will inherit this 0. This gives us a way for new libraries linked by old clients to realize they can't know a proxy's version. wl_display's version being unqueryable (always returning 0) is an acceptable side effect, since it's a special object you can't bind specific versions of anyway. Second half: Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
* tests: Test that one can fetch the protocol error after EPIPEJonas Ådahl2016-01-161-9/+169
| | | | | | | | | | | If a client is terminated due to some reason, it should always be possible to retrieve protocol error associated with the termination. Test that, while either using the dispatch helpers (wl_display_dispatch(_queue)() or the prepare read API, it should be possible to retrieve the error after EPIPE. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* tests: Pass argument to client mainJonas Ådahl2016-01-166-37/+45
| | | | | | | | | | | | Change the API to pass an "void *" argument to the client main function, allowing the caller to call the same main function with different input. A helper (client_create_noarg) is added for when no argument is passed, and the existing test cases are changed to use this function instead. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* tests: Synchronize client termination in idle callbackJonas Ådahl2016-01-161-6/+21
| | | | | | | | | | | We currently wait for clients in the wl_client destroy signal, which is called before the client is destructed and the socket is closed. If test clients rely on being closed due to the socket being closed we'd dead lock. Avoid this by synchronizing in an idle task that is called after the client is fully destroyed. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* client: Fully flush during blocking dispatchJonas Ådahl2016-01-161-10/+29
| | | | | | | | | | | | | | wl_display_flush() may fail with EAGAIN which means that not all data waiting in the buffer has been flushed. We later block until there is data to read, which could mean that we block on input from the compositor without having sent out all data from the client. Avoid this by fully flushing the socket before starting to wait. This commit also changes the array length of the struct pollfd array from 2 to 1, as only one element was ever used. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* client: Use read preparation API in wl_display_dispatch_queue()Jonas Ådahl2016-01-161-35/+10
| | | | | | | | | | Instead of doing things that do the equivalent of using wl_display_prepare_read() and friends, just use the public API. The only semantical difference is that we will now unlock and lock the mutex more times compared to before. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* client: Don't make EPIPE fatal if triggered when flushingJonas Ådahl2016-01-161-5/+9
| | | | | | | | | | | If flushing hits EPIPE it should not make it a fatal error since it would make it impossible to process the rest of the data available in the buffer. Instead, let reading the socket make EPIPE fatal, letting the client have the possibility to process the last messages including any error causing the termination. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* client: Remove misplaced documentation about main loop intergrationJonas Ådahl2016-01-161-22/+0
| | | | | | | | | | | | There was documentation about how to integrate the display server file descriptor in the documentation about wl_display_dispatch_pending(). This is not the right place to put it, and it also had incorrect usage of the API (calling wl_display_dispatch_queue() on input on an unrelated fd) as an example. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Daniel Stone <daniels@collabora.com>
* client: Correct documentation regarding thread safenessJonas Ådahl2016-01-161-102/+61
| | | | | | | | | | | | | | | | | | | | The current documentation about wl_display_dispatch() states one may not mix wl_display_dispatch(_queue)() with wl_display_prepare_read() and friends, but this is a misconception about how wl_display_dispatch(_queue)() works. The fact is that the dispatch functions does the equivalent of what the preparation API does internally, and it is safe to use together. What is not safe is to dispatch using the wl_display_dispatch(_queue)() functions while being prepared to read using wl_display_read_events(). This patch rewrites the documentation to correctly state when the various API's are thread safe and how they may not be used. https://bugs.freedesktop.org/show_bug.cgi?id=91767 Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* protocol: Add DnD actionsCarlos Garnacho2016-01-161-1/+204
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These 2 requests have been added: - wl_data_source.set_actions: Notifies the compositor of the available actions on the data source. - wl_data_offer.set_actions: Notifies the compositor of the available actions on the destination side, plus the preferred action. Out of the data from these requests, the compositor can determine the action both parts agree on (and let the user play a role through eg. keyboard modifiers). The chosen option will be notified to both parties through the following two requests: - wl_data_source.action - wl_data_offer.action In addition, the destination side can peek the source side actions through wl_data_offer.source_actions. Compared to the XDND protocol, there's two notable changes: - XDND lets the source suggest an action, whereas wl_data_device lets the destination prefer a given action. The difference is subtle here, it comes off as convenience because it is the drag destination which receives the motion events (unlike in X) and can perform action updates. The drag destination seems also in a better position to update the preferred action based on things like the data being transferred, the place being dropped, and whether the drag is client-local. - That same source-side preferred action is used in XDND to convey the modifier-induced action to the drag destination, which would then ack it, or reply with another action that's accepted (or none), this makes the XdndPosition/XdndStatus messaging very verbose, and synchronous because the drag source always needs to know the latest status/action for every position+action sent. Here it's the compositor which takes care of modifiers and matching available/accepted actions, this allows for the signaling to happen only whenever the actions/modifiers change for real. Roughly based on previous work by Giulio Camuffo <giuliocamuffo@gmail.com> Changes since v10: - Narrow down the situations where wl_data_source/offer.accept requests are supposed to happen. Changes since v9: - Deferred the protocol errors to .finish after some IRC chat with Jonas, added further errors if actions API is used on selection sources/offers. Changes since v8: - Defined further the expected behavior on "ask", described the protocol errors that may happen. Fix more spaces vs tabs issues. Changes since v7: - Misc changes after updating the progress notification patch. Changes since v6: - Further explanations on wl_data_source/offer.set_actions, including a description of "ask" actions. Added protocol errors for unknown action values. Changes since v5: - Applied rewording suggestions from Jonas Ådahl. Dropped slot reservation scheme for actions. Fixed indentation and other minor formatting issues. Changes since v4: - Minor rewording. Changes since v3: - Splitted from DnD progress notification changes. - Further rationales in commit log. Changes since v2: - Renamed notify_actions to set_actions on both sides, seems more consistent with the rest of the protocol. - Spelled out better which events may be triggered on the compositor side by the requests, the circumstances in which events are emitted, and what are events useful for in clients. - Defined a minimal common ground wrt compositor-side action picking and keybindings. - Acknowledge the possibility of compositor/toolkit defined actions, even though none are used at the moment. Changes since v1: - Added wl_data_offer.source_actions to let know of the actions offered by a data source. - Renamed wl_data_source.finished to "drag_finished" for clarity - Improved wording as suggested by Bryce Signed-off-by: Carlos Garnacho <carlosg@gnome.org> Reviewed-by: Michael Catanzaro <mcatanzaro@igalia.com> Reviewed-by: Mike Blumenkrantz <zmike@samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* protocol: Improve data source notification around DnD progressCarlos Garnacho2016-01-161-6/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, there's no means for the DnD origin to know whether the destination is actually finished with the DnD transaction, short of finalizing it after the first transfer finishes, or leaking it forever. But this poses other interoperation problems, drag destinations might be requesting several mimetypes at once, might be just poking to find out the most suitable format, might want to defer the action to a popup, might be poking contents early before the selection was dropped... In addition, data_source.cancelled is suitable for the situations where the DnD operation fails (not on a drop target, no matching mimetypes, etc..), but seems undocumented for that use (and unused in weston's DnD). In order to improve the situation, the drag source should be notified of all stages of DnD. In addition to documenting the "cancelled" event for DnD purposes, The following 2 events have been added: - wl_data_source.dnd_drop_performed: Happens when the operation has been physically finished (eg. the button is released), it could be the right place to reset the pointer cursor back and undo any other state resulting from the initial button press. - wl_data_source.dnd_finished: Happens when the destination side destroys the wl_data_offer, at this point the source can just forget all data related to the DnD selection as well, plus optionally deleting the data on move operations. Changes since v6: - Turned wl_data_offer.finish calls with 0/NULL state/mimetype an error, made it explicit that it will only result in wl_data_offer.dnd_finished being sent if successful. Changes since v5: - Further rewording of wl_data_offer.finish and wl_data_offer.accept. Added error for untimely wl_data_offer.finish requests. Changes since v4: - Applied rewording suggestions from Jonas Ådahl. Added new wl_data_offer.finish request to allow explicit finalization on the destination side. Changes since v3: - Renamed dnd_performed to a more descriptive dnd_drop_performed, documented backwards compatible behavior on wl_data_offer.accept and wl_data_source.cancelled. Changes since v2: - Minor rewording. Changes since v1: - Renamed events to have a common "dnd" namespace. Made dnd_performed to happen invariably, data_device.cancelled may still happen afterwards. Signed-off-by: Carlos Garnacho <carlosg@gnome.org> Reviewed-by: Michael Catanzaro <mcatanzaro@igalia.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mike Blumenkrantz <zmike@samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* server: Test for illegally low interface versions in wl_global_create()Derek Foreman2016-01-141-0/+7
| | | | | | | Any version lower than 1 is unreasonable. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* server: improve failure log message for wl_global_create()Derek Foreman2016-01-141-3/+4
| | | | | | | | | | | | | | The gratuitous %m jammed onto the end of the string prints errno concatenated with the word "version". I've removed the %m, and printed some additional information about the failure. Also, reversed the order of the expressions in the conditional to make it match the english in the log message. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* protocol: add wl_pointer.frame, axis_source, axis_stop, and axis_discretePeter Hutterer2016-01-141-3/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The frame event groups separate pointer events together. The primary use-case for this at the moment is diagonal scrolling - a vertical/horizontal scroll event can be grouped together to calculate the correct motion vector. Frame events group all wl_pointer events. An example sequence of motion events followed by a diagonal scroll followed by a button event is: wl_pointer.motion wl_pointer.frame wl_pointer.motion wl_pointer.frame wl_pointer.axis wl_pointer.axis wl_pointer.frame wl_pointer.button wl_pointer.frame In the future, other extensions may insert additional information about an event into the frame. For example, an extension may add information about the physical device that generated an event into the frame. For this reason, enter/leave events are grouped by a frame event too. The axis_source event determines how an axis event was generated. That enables clients to judge when to use kinetic scrolling. Only one axis_source event is allowed per frame and applies to all events in this frame. The axis_stop event notifies a client about the termination of a scroll sequence, likewise needed to calculate kinetic scrolling parameters. Multiple axis_stop events within the same frame indicate that scrolling has stopped in all these axis at the same time. The axis_discrete event provides the wheel click count. Previously the axis value was some hardcoded number (10), with the discrete steps this enables a client to differ between line-based scrolling on a mouse wheel and smooth scrolling with a touchpad. The axis_discrete event carries the axis information and the discrete value and can occur at any time in the frame provided it is ordered before the matching axis event. Specifically, this sequence is valid: wl_pointer.axis_source wl_pointer.axis_discrete (vert) wl_pointer.axis_discrete (horiz) wl_pointer.axis (horiz) wl_pointer.axis (vert) wl_pointer.frame Enter and leave event also trigger wl_pointer.frame events, where possible the compositor should group leave and subsequent enter into the same frame. This indicates to the client that the pointer has moved between surfaces and may allow a client to shortcut code otherwise triggerd by the leave or enter events. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Carlos Garnacho <carlosg@gnome.org> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* socket-test: Refactor if check into the assertBryce Harrington2016-01-131-2/+1
| | | | Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
* socket-test: Fix some comment typosBryce Harrington2016-01-131-5/+7
| | | | Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
* server: don't send an error to NULL display_resourceMarek Chalupa2016-01-131-1/+2
| | | | | | | | | | | | | | if display_resource = wl_resource_create() fails in bind_display(), we call wl_client_post_no_memory() which is wrong, since this function uses display_resource (which is NULL at this point). said simply: don't send an error to resource that you've just failed to create) https://bugs.freedesktop.org/show_bug.cgi?id=91356 Reported-by: Ashim <ashim.shah@samsung.com> Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* client: Add missing arg in a wl_log invocationVictor Berger2016-01-131-1/+1
| | | | | | | | Without this 'proxy' argument, the '%p' formatter prints a constant garbage value. Signed-off-by: Victor Berger <victor.berger@m4x.org> Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
* server: Calculate remaining data size after a closure is processedJaeyoon Jung2016-01-123-2/+12
| | | | | | | | | | | When processing a closure, data in the connection can be consumed again if the closure itself invokes extra event dispatch. In that case the remaining data size is also altered, so the variable len should be updated after the closure is processed. Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* doc: Fix incorrect parameter nameJonas Ådahl2016-01-121-1/+1
| | | | | | | Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* doc: Fix function membershipJonas Ådahl2016-01-122-7/+7
| | | | | | | | | | Put the various misplaced functions in the right class; partly because its where they belong, and partly to make intra-class \ref(erences) happy. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* Use zalloc instead of malloc + memsetJonas Ådahl2016-01-125-18/+15
| | | | | | | Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* scanner: Fail if 'since' is higher than the interface versionJonas Ådahl2016-01-121-1/+5
| | | | | | | | | | | If an event or request have a "since" attribute that is larger than the version of the interface it is in, fail with an explaining error message. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* scanner: Add missing bracketsJonas Ådahl2016-01-121-1/+2
| | | | | | | | | | | A statement was added at the same indentation level as the true branch of the if statement, but since there were no brackets, it would be executed independently of the result of the if condition. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* server: Add a socket with an existing fdBryce Harrington2015-12-182-0/+46
| | | | | | | | | | | | This adds functionality to allow system-level control over handing out file descriptors for sockets, to allow tighter security when running a Wayland compositor under a Wayland session server. Allows writing socket activated Wayland servers. Signed-off-by: Bryce Harrington <bryce@osg.samsung.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Cc: Sung-Jin Park <sj76.park@samsung.com> Cc: Sangjin Lee <lsj119@samsung.com>
* protocol: specify behavior of get_pointer when capabilities changePeter Hutterer2015-12-071-3/+30
| | | | | | | | | Also applies to touch/keyboard Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
* protocol: Add wl_surface.damage_bufferDerek Foreman2015-12-031-2/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wl_surface.damage uses surface local co-ordinates. Buffer scale and buffer transforms came along, and EGL surfaces have no understanding of them. Theoretically, clients pass damage rectangles - in Y-inverted surface co-ordinates) to EGLSwapBuffersWithDamage, and the EGL implementation passed them on to wayland. However, for this to work the EGL implementation must be able to flip those rectangles into the space the compositor is expecting, but it's unable to do so because it doesn't know the height of the transformed buffer. So, currently, EGLSwapBuffersWithDamage is unusable and EGLSwapBuffers has to pass (0,0) - (INT32_MAX, INT32_MAX) damage to function. wl_surface.damage_buffer allows damage to be registered on a surface in buffer co-ordinates, avoiding this problem. Credit where it's due, these ideas are not entirely my own: Over a year ago the idea of changing damage co-ordinates to buffer co-ordinates was suggested (by Jason Ekstrand), and it was at least partially rejected and abandoned. At the time it was also suggested (by Pekka Paalanen) that adding a new wl_surface.damage_buffer request was another option. This will eventually resolve: https://bugs.freedesktop.org/show_bug.cgi?id=78190 by making the problem irrelevant. Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
* server: remove redundant includeMarek Chalupa2015-11-271-1/+0
| | | | | | | we don't use ffi in wayland-server.c Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
* protocol: fix a couple of whitespace issuesPeter Hutterer2015-11-231-11/+11
| | | | | | 8 spaces is one tab Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* protocol: Remove incorrect statement that attach must precede damageDerek Foreman2015-11-201-4/+2
| | | | | | | | | | | | | The documentation for wl_surface.commit makes it clear that the application of damage follows attach during the commit, so it doesn't matter what order the app sends the requests. Many existing apps post damage before attaching a buffer already, and it's really quite reasonable to do so. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
* scanner: drop altmacro from dtddata.SPekka Paalanen2015-11-191-9/+8
| | | | | | | | | | | | | | | | Stop using .altmacro in dtddata.S, because clang does not yet implement it. Turns out that we do not actually seem to need it, and we can modify the syntax to work without it. Moving the double quotes from the binfile line to the .incbin line is required to avoid the assembler error "missing string". Instead of & we now use \() to mark the end of macro argument name. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92988 Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Tested-by: Víctor Jáquez <vjaquez@igalia.com> Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
* Makefile: use automake rule for compiling .SPekka Paalanen2015-11-191-3/+0
| | | | | | | | | | | | | | | Automake seems to have its own rules for compiling an .o from an .S. Essentially it does the same as our hand-crafted rule, but adds some things like dependency file generation. Remove our hand-crafted rule to use the automake rule, it is less surprising. http://www.gnu.org/software/automake/manual/html_node/Assembly-Support.html Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Tested-by: Víctor Jáquez <vjaquez@igalia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
* Validate the protocol xml during scanningPeter Hutterer2015-11-174-3/+132
| | | | | | | | | | | | | | | | | | | | Embed the wayland.dtd protocol data into the scanner binary so we can validate external protocol files without requiring makefile changes. Hat-tip to Pekka Paalanen for the embedding trick. The embedding trick doesn't work well if the to-be-embedded file is in a different location than the source file, so copy/link it during configure and then build it in from the local directory. The current expat parser is not a validating parser, moving scanner.c to another parser has the risk of breaking compatibility. This patch adds libxml2 as extra (optional) dependency, but that also requires parsing the input twice. If the protocol fails validation a warning is printed but no error is returned otherwise. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
* protocol: add the new bitfields to the dtdPeter Hutterer2015-11-171-0/+2
| | | | | | | | See 851614fa78862499e016c5718e730fefbb8e3b73 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Auke Booij <auke@tulcod.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>