- Apr 17, 2018
-
-
Pekka Paalanen authored
Migrate the RDP frontend to use the new head-based output configuration API: listen for heads_changed, and process all heads. v7: - remove unnecessary 'goto out' in load_rdp_backend() Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Acked-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Migrate the fbdev frontend to use the new head-based output configuration API: listen for heads_changed, and process all heads. v7: - remove unnecessary 'goto out' in load_fbdev_backend() Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Acked-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Migrate the Wayland frontend to use the new head-based output configuration API: listen for heads_changed, and process all heads. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Migrate the x11 frontend to use the new head-based output configuration API: listen for heads_changed, and process all heads. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Migrate the headless frontend to use the new head-based output configuration API: listen for heads_changed, and process all heads. The simple_heads_changed() function is written to be able to cater for all backends. The rest will be migrated individually. The head destroy listeners are not exactly necessary, for headless anyway, but this is an example excercising the API. Also is_device_changed() check is mostly useful with DRM. v8: - replace weston_compositor_set_heads_changed_cb() with weston_compositor_add_heads_changed_listener() - fix comment on wet_head_tracker_create() v3: Print "Detected a monitor change" only for enabled heads. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v6 Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Move the call out of wet_configure_windowed_output_from_config() and into its callers. This allows to migrate each frontend one by one. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Reacting to DRM hotplug events is racy. It is theoretically possible to get hotplug events for a quick swap from one monitor to another and process both only after the new monitor is connected. Hence it is possible for display device information to change without going through a disconnected state for the head. To support such cases, add API to allow detecting it in the compositor. v6: - change str_null_neq() to str_null_eq() - rename weston_head_condition_device_changed() - move the condition from weston_head_set_device_changed() to the callers Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Add support for subscribing to weston_head destruction. The primary use case for heads being destroyed arbitrarily is the DRM-backend with MST connectors, which may disappear on unplug. It is not just the connector becoming disconnected, it is the connector actually disappearing. The compositor needs to know about disappearing heads so that it has a chance to clean up "orphaned" outputs which do get disabled but still need destroying at run time. Shutdown would destroy them as well. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Introduce the API for users (compositors) to create an output from a head, attach and detach heads, and destroy outputs created this way. This also adds the backend-facing API to libweston. In the new API design, a backend creates heads, and the compositor chooses one or more heads (clone mode) to be driven by an output. In the future backends will be converted to not create outputs directly but only in the new create_output hook. The user subscribes to a heads_changed hook and arranges heads into outputs from there. Adding the API this way will allow frontends (main.c) and backends to be converted one by one. This adds compatiblity paths in weston_compositor_create_output_with_head() and weston_output_destroy() so that frontends can be converted first to call these, and then backends can be converted one by one to the new design. Afterwards, the compatibility paths will be removed along with weston_output::head. Currently heads can be added to a disabled output only. This is less than ideal for clone mode hotplug and should be improved on later. v4: Remove the wl_output global on head detach if output is enabled. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
- Apr 12, 2018
-
-
Pekka Paalanen authored
Add a hook for compositors to get a callback when heads are added or their connection status changes, to which compositors likely want to react to by enabling or disabling outputs (API for that to be added later). As many head changes as possible should be coalesced into a single heads_changed call. Therefore the callback is made from an idle task. This anticipates a future atomic output configuration API, where the global output configuration is tested and set atomically instead of one by one. weston_pending_output_coldplug() needs to manually execute the heads_changed call so that initial outputs are created before any plugins get their start-up idle tasks ran. This is especially important for ivi-shell which does not support output hotplug, and for tests to guarantee the expected outputs. v8: - Change the callback function pointer into a wl_signal. The API is changed and renamed. v6: - fix a typo - add comment in weston_pending_output_coldplug() Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v6 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> v6 Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
weston_compositor needs to maintain a list of all available heads, so that a compositor can pick and choose which heads to take into or out of use at arbitrary times. The heads may be on or off, and connected or disconnected. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Enabled is orthogonal from connected. A connected head could be disabled, or a disconnected head could in the future be enabled. Compositors quite likely want to check if a head is already enabled before starting to take it into use. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Heads may be disconnected or connected and the compositor needs to be able to know the state to know which heads to take into use. Currently a single head is automatically created with an output, and outputs are only ever created as connected and destroyed on disconnection, so it suffices to set connected to true. In the future, backends are expected to create heads for both connected and disconnected connectors, so that a connector can be forced on without it being actually connected. v6: - split weston_head_is_enabled() to a new patch Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Heads need to be named, so they can be referenced in logs and configuration sources. When clone mode is implemented, output and head names may differ. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
The 'head' member of 'struct weston_output' is going to go unused and then disappear, so stop using it and find a head from the proper list. However, this leaves a problem in cms-colord: if you have multiple monitors driver with the same CRTC, what do you say to the color management system? The monitors could be different, but all the color LUTs etc. are in the CRTC and are shared, as is the framebuffer. Do the simple hack here and just use whatever head happens to be the first in the list. The warning is printed in get_output_id(), because if heads are added or removed while the output is enabled, the id could change. v6: - add weston_output_get_first_head(), at first use - add warning message for nr. heads > 1 Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Duplicate these strings to decouple their lifetime from whatever the backends used. This should prevent hard to catch use after frees and such problems in the future. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
Remove the wl_resource in the head's resource list when we are removing the wl_output global. We sent global removal events to clients, the resources should become dummies until clients reap them. Reset user data so that clients triying to use dummy objects don't hit e.g. a freed head pointer. This fixes a theoretical issue: if an enabled output is disabled and then gets enabled again, mode changes and wl_surface.enter/leave would still attempt to use the dummy objects. If a client destroyed a dummy object, we don't have the destructor to remove it from the resource list, and libweston would hit freed memory. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
The intention is that in the future backends will dynamically allocate weston_heads based on the resources they have. The lifetime of a weston_head will be independent of the lifetime of a weston_output it may be attached to. Backends allocate objects derived from weston_head, like they currently do for weston_output. Backend will choose when to destroy a weston_head. For clone mode, struct weston_output gains head_list member, which is the list of attached heads that will all show the same framebuffer. Since heads are growing out of weston_output, management functions are added. Detaching a head from an enabled output is allowed to accommodate disappearing heads. Attaching a head to an enabled output is disallowed because it may need hardware reconfiguration and testing, and so requires a weston_output_enable() call. As a temporary measure, we have one weston_head embedded in weston_output, so that backends can be migrated individually to the new allocation scheme. v8: - Do not send wp_presentation_feedback.sync_output events for multiple wl_output globals in weston_presentation_feedback_present(). v6: - adapt to upstream changes in weston_output_set_transform() - use wl_list_for_each_safe in weston_output_release() - removed weston_output_get_first_head() as it's not needed yet Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> v7 Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
- Apr 10, 2018
-
-
Pekka Paalanen authored
Split out a new function. This is a pure refactoring, no change in behaviour. This helps a following patch that adds a loop over output->head_list. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
The user data of a wl_resource representing a wl_output protocol object used to be a pointer to weston_output. Now that weston_output is being split, wl_output more accurately refers to weston_head which is a single monitor. Change the wl_output user data to point to weston_head. weston_output_from_resource() is replaced with weston_head_from_resource(). This change is not strictly necessary, but architecturally it is the right thing to do. In the future there might appear the need to refer to a specific head of a cloned pair, for instance. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
As a wl_output represents weston_head, use a weston_head pointer as the wl_output global's user data. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
The wl_output protocol interface exposes things like monitor make, model, sub-pixel layout and physical dimensions. Obviously wl_output is meant to represent a monitor. The abstraction of a monitor is weston_head. Therefore move the wl_output global and the bound resources list into weston_head. When clone mode gets implemented in the future, this means that monitors driven by the same CRTC will still be represented as separate wl_output globals. This allows to accurately represent the hardware. Clone mode that used separate, not frame-locked, CRTCs to drive two monitors as clones would necessarily also be exposed as separate wl_output since they have different timings. v6: - adapt to upstream changes in weston_output_set_transform() Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
Pekka Paalanen authored
In order to support clone modes, libweston needs the concept of a head that is separate from weston_output. While weston_output manages buffers and the repaint state machine, weston_head will represent a single monitor. In the future it will be possible to have a single weston_output drive one or more weston_heads for a clone mode that shares the framebuffers between all cloned heads. All the fields that are obviously properties of the monitor are moved from weston_output into weston_head. As moving the fields requires one to touch all the backends for all the assingments, introduce setter functions for them while we are here. The setters are identical to the old assignments, for now. As a temporary measure, weston_output embeds a single head. Also the ugly casts in weston_head_set_monitor_strings() will be removed by a follow-up patch. Libweston major version is bumped, because weston_output struct layout is changed. v7: - Bump libweston major version. v6: - adapt to upstream changes in weston_output_set_transform() Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> v5 Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> v6 Reviewed-by:
Ian Ray <ian.ray@ge.com> Reviewed-by:
Daniel Stone <daniels@collabora.com> Acked-by:
Derek Foreman <derekf@osg.samsung.com>
-
- Apr 09, 2018
-
-
Derek Foreman authored
configure won't work if weston's version is higher than libweston's.
-
Derek Foreman authored
-
Derek Foreman authored
-
- Apr 05, 2018
-
-
Daniel Stone authored
ef57a9b7 added support for window operations such as reporting the title in escape mode. It implemented this by which-window-op case, inside the existing which-escape-code case. Whilst it would break out of the former window-op case, it never broke out of the latter escape-code case. This would lead to window ops (such as reporting title) falling through to restoring the saved cursor position. This doesn't seem at all right, and also fixes a warning with GCC 8. Signed-off-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com>
-
- Apr 02, 2018
-
-
Derek Foreman authored
-
Derek Foreman authored
This (partially) reverts commit bef76179. This (partially) reverts commit 4d1cd36c. This (partially) reverts commit 44fc1be9. This (partially) reverts commit 6b58ea8c. The new xwm icon code has proven to be leaky and incomplete, and while we have patches under consideration to fix the rest of its known problems they still require changes and review cycles. Currently the known leaks have been squashed, but it still picks wrong sized icons and does no scaling, which can lead to very strange rendering. At window close time the wrong sized icon appears above the window during fade out. This patch reverts the mostly solid bits and keeps the unfinished bits behind in favor of a simpler revert than removing the whole thing. Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> Acked-by:
Daniel Stone <daniels@collabora.com> Reviewed-by:
Quentin Glidic <sardemff7+git@sardemff7.net>
-
- Mar 28, 2018
-
-
Derek Foreman authored
This reverts commit 332d1892. And re-introduces the bug it was intended to fix, see: https://lists.freedesktop.org/archives/wayland-devel/2017-December/036402.html Reverting this because it causes harm to all xwayland clients - the input region no longer gets adjusted when resizing windows. start an xterm, resize it larger, you can no longer interact with the new area of the window (including the server side decor).
-
Derek Foreman authored
Hopefully sort the last leaks introduced in commit 6b58ea8c The window could be destroyed before it had a frame but after it had an icon (I could trigger this with firefox), and the window could be assigned an icon twice before it had a frame (I could trigger this with terminology). The latter leak was Reported-by:
Scott Moreau <oreaus@gmail.com> Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
If output_list of compositor is empty, value of ret is read without initialization. Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
we have to set num_images after import_simple_dmabuf call. Otherwise, egl_images will not be correctly referenced in gl_renderer_attach_dmabuf. (Found by clang source code analyzer) Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
If the constraint is an one-shot constraint, constraint is freed in disable_pointer_constraint function. Therefore, we should not try to read freed memory at "switch (constraint->lifetime)" statement. The removed code is anyway superfluous. Because surface destroy signal is only removed, when constraint is an one-shot constraint. (Found by clang source code analyzer) Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
assigned values of x, y, ret and layout_surface are never read. (Found by clang source code analyzer) Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
ret is overwritten by drmModeAddFB2 call (Found by clang source code analyzer) Signed-off-by:
Emre Ucan <eucan@de.adit-jv.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Mar 27, 2018
-
-
Scott Moreau authored
A memory leak introduced by 6b58ea8c led to me finding a bigger leak, which is xwm was calling frame_create() without calling frame_destroy(). This meant that the associated icon_surface was not being destroyed, leaving the destroy handler for it broken. Here we fix this by calling frame_destroy() when the window is destroyed and free the reply in the icon_surface destroy handler. Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Mar 20, 2018
-
-
Pekka Paalanen authored
This reverts commit d2cb711d. I missed the call to cairo_image_surface_create_for_data() which assumes the data will remain present until the cairo surface is destroyed. It seems the existence of data depends on the reply not being freed. This will need a more involved fix. Sorry, I noticed this just seconds after I pushed the patch. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Fix memory leak introduced by 6b58ea8c. weston_wm_handle_icon() was calling xcb_get_property_reply() without freeing the reply. Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-