- 21 Jan, 2015 5 commits
-
-
Pekka Paalanen authored
Decode the new feedback flags. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Tested-by:
Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
PRESENTATION_FEEDBACK_KIND_ZERO_COPY is a flag that needs to be set for each surface separately. Some surfaces may be zero-copy (as defined by Presentation feedback) while some are not. A complication with Weston is that a surface may have multiple views on screen. All copies (views) of the surface are required to be zero-copy for the ZERO_COPY flag to be set. Backends set per-view feedback flags during the assing_planes hook, and then Weston core collects the flags from all views of a surface. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Tested-by:
Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Change weston_output_finish_frame() signature so that backends are required to set the flags, that will be reported on the Presentation 'presented' event. This is meant for output-wide feedback flags. Flags that vary per wl_surface are subject for the following patch. All start_repaint_loop functions use the special private flag PRESENTATION_FEEDBACK_INVALID to mark, that this call of weston_output_finish_frame() cannot trigger the 'presented' event. If it does, we now hit an assert, and should then investigate why a fake update triggered Presentation feedback. DRM: Page flip is always vsync'd, and always gets the completion timestamp from the kernel which should correspond well to hardware. Completion is triggered by the kernel/hardware. Vblank handler is only used with the broken planes path, therefore do not report VSYNC, because we cannot guarantee all the planes updated at the same time. We cannot set the INVALID, because it would abort the compositor if the broken planes path was ever used. This is a hack that will get fixed with nuclear pageflip support in the future. fbdev: No vsync, update done by copy, no completion event from hardware, and completion time is totally fake. headless: No real output to update. RDP: Guessing that maybe no vsync, fake time, and copy make sense (pixels sent over network). Also no event that the pixels have been shown? RPI: Presumably Dispmanx updates are vsync'd. We get a completion event from the driver, but need to read the clock ourselves, so the completion time is somewhat unreliable. Zero-copy flag not implemented though it would be theoretically possible with EGL clients (zero-copy is a per-surface flag anyway, so in this patch). Wayland: No information how the host compositor is doing updates, so make a safe guess without assuming vsync or hardware completion event. While we do get some timestamp from the host compositor, it is not the completion time. Would need to hook to the Presentation extension of the host compositor to get more accurate flags. X11: No idea about vsync, completion event, or copying. Also the timestamp is a fake. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Tested-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Acked-by:
Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Add the missing feedback flags to the Presentation extension protocol specification. These flags are slightly different from the previous RFCv3.1 definition: http://lists.freedesktop.org/archives/wayland-devel/2014-March/013598.html Now, all compositors are safe to use 0 as the flags if they don't bother setting them properly. 0 is the "worst case" with the least guarantees. The meaning of ZERO_COPY is not exactly the opposite of the old COPY flag. ZERO_COPY is more strict, but applies only to that one surface. Therefore it can be used to verify a zero-copy video playback pipeline, also to a hardware overlay. There is no longer a flag to clearly indicate if the final presentation was done by a copy or a page flip. ZERO_COPY forbids the copy, but VSYNC alone does allow copy in case it cannot tear. It is possible to have first a compositing pass, and then another copy into the frontbuffer, and still set VSYNC if it cannot tear. Usually "cannot tear" is too hard to guarantee with a copy, so it often implies a page flip. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Tested-by:
Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
When a function is named drm_output_FOO(), you'd expect it to take a struct drm_output * as an argument. Convert drm_output_prepare_scanout_view(), drm_output_prepare_overlay_view(), drm_output_prepare_cursor_view() from weston_output to drm_output. Additionally convert drm_sprite_crtc_supported() from weston_output to drm_output. This change makes drm_assign_planes() to operate on drm_output terms, which makes further changes a tiny bit easier. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Tested-by:
Mario Kleiner <mario.kleiner.de@gmail.com>
-
- 17 Jan, 2015 5 commits
-
-
Bryce Harrington authored
-
David Herrmann authored
The current parser directly reads a BOOLEAN on the PropertiesChanged signal for 'Active' properties. However, all property-values are packed in a VARIANT, otherwise, we wouldn't know the type. Fix the parser to recurse into the variant before reading the boolean. To avoid such bugs in the future, we extract the 'Active' parser into a helper function parse_active(), which is then shared between the PropertiesChanged and Get handlers. Signed-off-by:
David Herrmann <dh.herrmann@gmail.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Tested-by:
nerdopolis <bluescreen_avenger@verizon.net>
-
David Herrmann authored
Logind sends us a notification whenever the Active attribute of our session changes. However, due to the way compositor-drm.c relies on the master DRM device to be synced with the session, we used to delay Active=true handling until the DRM device was up, too. See: commit aedc7732 Author: David Herrmann <dh.herrmann@gmail.com> Date: Sat Nov 30 11:25:45 2013 +0100 logind: delay wakeup until DRM-device is resumed However, the other compositor backends do not use DRM, so logind-util will never get notified about any DRM device. Therefore, we have to forward the Active=true change immediately. This commit fixes logind-util to take sync_drm as argument. If it is true, we do DRM-device synchronisation, otherwise we don't. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=86889 Signed-off-by:
David Herrmann <dh.herrmann@gmail.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Tested-by:
nerdopolis <bluescreen_avenger@verizon.net>
-
David Herrmann authored
xwayland uses SIGUSR1 as startup notification. Make sure to use SIGRTMIN for VT handling to avoid conflicts. A bonus is SIGRT* signals can be queued multiple times, so we will be able to correctly track them and will no longer lose signals (which wouldn't really matter, but is confusing in logs). Signed-off-by:
David Herrmann <dh.herrmann@gmail.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Tested-by:
nerdopolis <bluescreen_avenger@verizon.net>
-
David Herrmann authored
xwayland uses SIGUSR1 as startup notification. Make sure to use SIGRTMIN and SIGRTMIN+1 for VT handling. A bonus is SIGRT* signals can be queued multiple times, so we will be able to correctly track them and will no longer lose signals (which wouldn't really matter, but is confusing in logs). Signed-off-by:
David Herrmann <dh.herrmann@gmail.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Tested-by:
nerdopolis <bluescreen_avenger@verizon.net>
-
- 15 Jan, 2015 3 commits
-
-
Jonas Ådahl authored
Signed-off-by:
Jonas Ådahl <jadahl@gmail.com>
-
Peter Hutterer authored
libinput < 0.8 sent wheel click events with value 10. Since 0.8 the value is the angle of the click in degrees but it now provides the click count as separate value. To keep backwards-compat with existing clients, we just send multiples of the click count. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Jonas Ådahl <jadahl@gmail.com> Reviewed-by:
Jonas Ådahl <jadahl@gmail.com>
-
Peter Hutterer authored
libinput now provides a single event for scroll events. Extract the axes from that event and split them into the wl events. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by:
Jonas Ådahl <jadahl@gmail.com>
-
- 08 Jan, 2015 1 commit
-
-
Derek Foreman authored
When the last pointer is removed from a seat, the pointer struct is intentionally kept. This has some interesting side effects, so I've documented it here so people like me don't errantly assume it's a bug. Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Jonas Ådahl <jadahl@gmail.com>
-
- 19 Dec, 2014 1 commit
-
-
The assertion in x11_compositor_find_output() can trigger during normal shutdown, for example, when moving the mouse while hitting a hotkey to close the weston window. Instead we can remove the assert(), return NULL, and discard events we can't find a destination output for. v2 Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> v1 Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 18 Dec, 2014 1 commit
-
-
Pekka Paalanen authored
wl_surface role error codes were added during the 1.6.90 development to libwayland. Reported-by:
Sjoerd Simons <sjoerd.simons@collabora.co.uk> Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 16 Dec, 2014 2 commits
-
-
Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
-
A keyboard might not be present in a seat, so check that before dereferencing keyboard related pointers. Also, use the keyboard pointer we set to shorten the code a little bit. Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Jan Arne Petersen <janarne@gmail.com>
-
- 15 Dec, 2014 13 commits
-
-
Reviewed-by:
Daniel Stone <daniel.stone@collabora.com>
-
Signed-off-by:
Derek Foreman <derekf@osg.samsung.com>
-
Signed-off-by:
Derek Foreman <derekf@osg.samsung.com>
-
Put the return type on a separate line in function declarations. Signed-off-by:
Derek Foreman <derekf@osg.samsung.com>
-
Signed-off-by:
Derek Foreman <derekf@osg.samsung.com>
-
This fixes the breakage caused by "ivi-shell: make ivi-layout.c as a part of ivi-shell.so" hmi-controller.c: A reference implementation of controller module does not use the layout functions directly. This get function pointers at controller_module_init which called by ivi-shell. ivi-layout-export.h: Definition of interfaces in a struction: ivi_controller_interface. function pointers are set at ivi-layout.c. ivi-layout-private.h: Definition of some interfaces are remove bucause it is implemented in ivi-layout.c and set it as function pointer. Several interfaces are kept here because they are implemented in ivi-layout.c/transition.c but used in other files. ivi-layout-transition.c: remove WL_EXPORT because export is not needed anymore. remove unnesesary unsed method. ivi-shell.c: call controller_module_init of hmi-controller to init it and set function pointers. If the interface_version is equal or greater than what hmi_controller was built with, things are pass. If the interface_version is smaller than what the controller expects, it has to fail because it cannot work. This is followed the manner, - never remove a function pointer - never modify an existing function signature - additions are allowed at the end of struct ivi_controller_interface - all function pointers must always be populated and working in ivi-shell.so (ivi-layout.c etc.) Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
ivi-layout.so is separately built and loaded by using dlopen with RTLD_GLOBAL. This was because these apis defined in ivi-layout.so shall be used by ivi-modules; e.g. hmi-controller. This shall be improved that a struct ivi_layout_api contains the whole exported API as function pointers to be exposed as module_init. This patch alone builds, but loading controller modules at runtime failes. This failure will be fixed by following patches. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Interfaces for properties setting shall be implemented in ivi-layout. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
In the future, re-alignmenet of WL_EXPORT per method should be done. For that work, re-ordering is required to be used by another method. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
ivi_layout_transition_layer_render_order is not necesary called. Remove the method and methods called by it. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
When ivi-module is not set in weston.conf, we probably want to tell the user about their error instead of just dying. Signed-off-by:
Ondřej Majerech <majerech.o@gmail.com> [Pekka: include Tanibata's suggestion, fix file name, fix surrounding coding style] Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
load_modules currently ignores errors signalled by both weston_load_module and module_init, and instead always returns 0. Its return value appears to be checked in callers, so we most likely want to propagate any errors. Signed-off-by:
Ondřej Majerech <majerech.o@gmail.com> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 12 Dec, 2014 3 commits
-
-
The fd member of clipboard_source structure was not set but was used in close(). v2. don't do unnecessary changes Signed-off-by:
Marek Chalupa <mchqwerty@gmail.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
There were unchecked malloc and no free for this memory. Also simplify error handling in one function. v2. remove check if memory is NULL, according to man pages, free(NULL) is a no-op Signed-off-by:
Marek Chalupa <mchqwerty@gmail.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
wl_display_dispatch() just dispatches events that are in default and display queues and if there are no events, then it will wait for them. But only dispatching the events doesn't guarantee that we got all the global announcements, we need to do sync too. Therefore use wl_display_roundtrip() instead of wl_display_dispatch(). Signed-off-by:
Marek Chalupa <mchqwerty@gmail.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 11 Dec, 2014 2 commits
-
-
To produce the bug, build and run: (you don't need the game data to test) https://github.com/clintbellanger/flare-engine/ $ mv ~/.config/flare ~/.config/flare.bak $ ./flare # click 'configure', set full screen mode then click 'ok' # weston will crash and dump core. [Pekka: edited the commit message] Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Bryce Harrington authored
-
- 08 Dec, 2014 2 commits
-
-
Pekka Paalanen authored
Logging is activated and deactivated with the debug key binding 't'. When activated, it creates a new log file, where it records the events. The log file contains events and detailed object information entries in JSON format, and is meant to be parsed in sequence from beginning to the end. The emitted events are mostly related to the output repaint cycle, like when repaint begins, is submitted to GPU, and when it completes on a vblank. This is recorded per-output. Also some per-surface events are recorded, including when surface damage is flushed. To reduce the log size, events refer to objects like outputs and surfaces by id numbers. Detailed object information is emitted only as needed: on the first object occurrence, and afterwards only if weston_timeline_object::force_refresh asks for it. The detailed information for surfaces includes the string returned by weston_surface::get_label. Therefore it is important to set weston_timeline_object::force_refresh = 1 whenever the string would change, so that the new details get recorded. A rudimentary parser and SVG generator can be found at: https://github.com/ppaalanen/wesgr The timeline logs can answer questions including: - How does the compositor repaint cycle work timing-wise? - When was the vblank deadline missed? - What is the latency from surface commit to showing the new content on screen? - How long does it take to process the scenegraph? v2: weston_surface::get_description renamed to get_label. v3: reafctor a bit into fprint_quoted_string(). Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
When printing out logs from Weston's actions, mainly for debugging, it can be very difficult to identify the different surfaces. Inspecting the configure function pointer is not useful, as the configure functions may live in modules. Add vfunc get_label to weston_surface, which will produce a short, human-readable description of the surface, which allows identifying it better, rather than just looking at the surface size, for instance. Set the label function from most parts of Weston, to identify cursors and drag icons, and panels, backgrounds, screensavers and lock surfaces, and the desktop shell's application surfaces. v2: renamed 'description' to 'label', so we get weston_surface_set_label_func(). Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- 04 Dec, 2014 2 commits
-
-
- introduces ivi-shell/input-panel-ivi.c which is basically copied from desktop shell. It shall be improvaded to remove duplicate implementation. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-