- May 21, 2014
-
-
Pekka Paalanen authored
Update to Weston 1.5.0 release.
-
- May 19, 2014
-
-
Kristian Høgsberg authored
-
- May 12, 2014
-
-
Kristian Høgsberg authored
This is the last RC before 1.5.
-
Ander Conselvan de Oliveira authored
Toytoolkit was not designed to handle input from subsurfaces and instead it expects subsurfaces to have an empty input region. That way input events for subsurfaces are generated on the main surface and there is no need to convert coordinates before reporting the event to the user. However it is possible that a subsurface has a non-empty input region, but in that case those events aren't properly processed. The function window_find_widget() assumes the coordinates are in the main surface coordinate space, and ends up chosing the wrong widget. This patch changes the input code to completely ignore input events from subsurfaces. This option was chosen instead of ensuring that the input region on those surfaces is always empty since there's no enforcement that a subsurface should completely overlap with the main surface. If an event happens in the area of the surface that doesn't overlap, the event could cause a completely unrelated surface to be picked. https://bugs.freedesktop.org/show_bug.cgi?id=78207
-
Pekka Paalanen authored
Before in the recursive automake setting, we had tests/logs/ for explicitly created test log files. There is a Makefile rule to remove the logs directory on 'make clean'. The rule broke on moving to non-recursive make, since now we have logs/, not tests/logs/. Fix the rule to remove the intended directory. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Bryce W. Harrington authored
[paalanen: added also *.trs to ignore] Signed-off-by: Bryce Harrington <b.harrington@samsung.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Jonas Ådahl authored
There was a bug in wayland-scanner that failed to detect when an message with implicitly set version (i.e. version 1) came after a message with a newer version. This patch fixes the weston desktop shell protocol to pass again. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
-
Pekka Paalanen authored
Fix build when rpi debugging enabled.
-
Pekka Paalanen authored
If Weston keeps the surface itself alive after the protocol object is gone, the queue was still there, pushing updates to the surface with destroyed wl_buffers, i.e. basically attaching NULL buffers. Just discard the queue when the client destroys the surface object.
-
Pekka Paalanen authored
When a client goes away, all wl_buffer objects get destroyed. The weston_surface will stay around for the closing animation, and so the queue survives, too. The queue will then produce a NULL attach, which unmaps the surface. A client could also deliberately queue a NULL wl_buffer. Therefore weston_surface_queue_process() may unmap the current surface and all its views.
-
Pekka Paalanen authored
just refactoring
-
Pekka Paalanen authored
These are to be enabled by a developer as needed. They helped to track down a problem, where the prediction was deemed practically perfect but feedback was sent on the frame after, leading to incorrect feedback that looked like all queued updates were always one frame late. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
This started as a copy of simple-shm.c before it was converted to xdg_shell. This demo excercises the presentation feedback interface in three different mode: - A continuous repaint loop triggered by frame callbacks, and using immediate commits, just gathering presentation feedback and computing some time intervals for statistics. - A burst mode, where it queues around 60 frames, and manages to sleep without any Wayland protocol traffic for around 1 second on a 60 Hz display while still animating continuously, until it needs to send the next burst. - A burst mode with presentation feedback for every frame. In all modes, all frames are pre-rendered at startup, so no rendering happens during the animation. By default, queueing the frames happens in random order, to test the compositor's ability to order queued updates by the timestamp. The target timestamps for queued frames are produced by a trivial algorithm, without any attempt to explicitly and quickly synchronize to the refresh cycle. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
Implement the queueing and queue processing of the Presentation extension. Every weston_surface (wl_surface) has a queue_list, which is ordered by the target presentation timestamp of the queued updates. A wl_surface.commit following a presentation.queue will trigger queueing instead of a normal commit. The buffer_viewport handling is changed to match the Presentation specification. In output repaint, the compositor predicts when the current repaint would hit the screen, based on the previous repaint's timestamp. The DRM vblank events carry a timestamp for the start of the active period, but they can be emitted earlier. This can make it look like the previous presentation finished in the future. This is dealt with by using proper rounding, and allowing timestamps that are at most 1 cycle in the future in weston_output_predict_presentation. The weston_surface::queue_list is processed during output repaint if the weston_surface's main output is the one being repainted. An update from the queue is applied according to the target timestamp, and earlier updates are discarded. The compositor will keep on repainting if there are any queued updates still existing in the weston_surfaces that have been processed by output repaint. Surfaces that are not part of the repaint will not automatically schedule a new repaint based on the queue; instead it is assumed that a repaint is scheduled when such a surface enters the repainted set of surfaces. A client queueing an update will also cause a repaint to be scheduled, to ensure the queue will get processed if the surface is on an output. As the realized presentation timestamp is available only after output repaint, updating all relevant surface timestamps would require a per-output list of weston_surfaces. Instead, weston_surfaces hold a reference to a weston_timestamp, which then gets the realized presentation timestamp in finish_frame(). The surface's presentation_time is used to discard queued updates that would replace the current content with an older content. Frame callbacks are not queued. A queueing commit does not touch any pending frame callbacks. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Add 'msc' field to weston_output to maintain the refresh counter, and use it in presentation_feedback.presented. Make compositor-drm update the per-output refresh counter with the values reported by DRM. If the DRM reported value jumps backwards, assume it wrapped around once. Other backends do not update weston_output::msc, and there presentation_feedback will always deliver refresh counter as zero. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Implement the presentation.feedback request, and the presentation_feedback protocol interface. Feedback information is delivered to clients as the backend reports it, except the refresh counter (MSC) which is always reported as zero. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Add presentation clock setters that verify the given clock actually works. Offer an automatic choice of a software fallback clock, when a backend has to always use clock_gettime() to approximate the presentation time. The DRM backend already queried the DRM about the clock id, just let the DRM backend set the presentation clock from that. For all other backends which do not get a timestamp from the driver, call the software clock setter to choose a suitable clock. Report the chosen clock via presentation.clock_id event to clients. In finish_frame(), upgrade the argument from uint32_t milliseconds to struct timespec which can accurately hold the presentation clock values. This will be needed when weston_output_finish_frame() starts to send out presentation_feedback.presented events. While at it, replace gettimeofday() calls with clock_gettime() using the chosen presentation clock, so we manufacture presentation timestamps from the presentation clock when the gfx drivers cannot give us a proper timestamp. Rpi patch is more verbose due to not having the compositor pointer available in rpi_flippipe_update_complete(). Explicitly carry the clock id with flippipe so it is available in the thread. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
You can bind to the global interface, and it delivers a fake clock id. All requests on it raise an error. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Add accurate presentation timing features to Wayland: queueing and feedback. This specification is based on the draft written by Frederic Plourde <frederic.plourde@collabora.co.uk> and redesigned by Pekka Paalanen. The RFC v2 version is from http://lists.freedesktop.org/archives/wayland-devel/2014-January/012988.html Changes in v3: * associate presentation time to current surface contents This implements the suggestion from http://lists.freedesktop.org/archives/wayland-devel/2014-February/013066.html which prevents surface content from jumping backwards in time if a client retroactively queues an update with a target time in the past. * use 64-bit tv_sec in presentation The time_t type used in struct timespec could be almost anything. POSIX probably defines it to be an integer, but not the size. Apparently it is usually 'long', which makes it 64-bit on x86_64. To be able to fully represent timespec values returned by clock_gettime, change the protocol to use 64 bits for the tv_sec part. * define an error for invalid tv_nsec This allow us to rely on the normalized timestamp form. * define some interactions with sub-surfaces Sub-surface cached state updates (synchronized mode) are designed especially for resizing. As queued updates are not meant to produce any resizing-like effects, they also do not trigger any sub-surface operations. * add sub-headings as xml comments * queued update cannot map Because before mapping, the surface has no main output assigned. An immediate commit is needed anyway, to be able to set all the surface state, which a queued update cannot touch. * frame callbacks are not queued It is not known when queueing frame callbacks would be useful. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
-
Pekka Paalanen authored
Before in the recursive automake setting, we had tests/logs/ for explicitly created test log files. There is a Makefile rule to remove the logs directory on 'make clean'. The rule broke on moving to non-recursive make, since now we have logs/, not tests/logs/. Fix the rule to remove the intended directory. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
[paalanen: added also *.trs to ignore] Signed-off-by: Bryce Harrington <b.harrington@samsung.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- May 09, 2014
-
-
Kristian Høgsberg authored
We should be using weston_view_unmap() here, or maybe just destroying the black view, but let's do a minimal, safe fix for the 1.5 release. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=78501
-
Kristian Høgsberg authored
-
Ander Conselvan de Oliveira authored
The calculation off the vertical offset between the widget coordinates and where the text was rendered was wrong. It was using the constant for horizontal offset for that too. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=78411
-
Pekka Paalanen authored
If the test is named xwayland.weston, then the automake test harness keys it off xwayland.log. Making xwayland.log runs the test. The test harness has implicit rules to create a %.log from all of %$TEST_EXTENSIONS. So we have implicit rules to create %.log from %.la and %.log from %.weston. We also build xwayland.so, which produces xwayland.la. When the test harness goes running the xwayland test, it ends up using the %.la rule, which is wrong. It passes xwayland.la as the test name to weston-tests-env, which then loads it as a plugin into Weston and waits for Weston to exit. Which it never does. Fix this by making the test have a different name than the Xwayland plugin. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
Again, load the shell plugin with full path, rather than possibly find an old version from a previous installation. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
If we do not specify the full path to xwayland.so, Weston can find an old one installed in a $prefix and use that instead of the freshly built one. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
Use --no-config to avoid loading arbitrary weston.ini files from unit tests. It may affect the unit test results. I actually hit the following case: [13:34:04.636] Using config file '/home/pq/local/etc/weston.ini' [13:34:04.636] Loading module '/home/pq/git/weston/.libs/headless-backend.so' [13:34:04.637] launching '/home/pq/local/libexec/weston-keyboard' [13:34:04.644] Loading module '/home/pq/local/lib/weston/desktop-shell.so' [13:34:04.644] Loading module '/home/pq/local/lib/weston/xwayland.so' [13:34:04.648] unlinking stale lock file /tmp/.X1-lock [13:34:04.648] xserver listening on display :1 [13:34:04.648] Loading module '/home/pq/git/weston/.libs/./xwayland.so' [13:34:04.648] xserver listening on display :2 [13:34:04.648] Module '/home/pq/local/lib/weston/xwayland.so' already loaded Weston tries to load xwayland module three times, or which twice it succeeds. This might not make the xwayland test end well. Or at all, actually. Adding --no-config should remove one of these loads of xwayland.so. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
Useful for unit tests. If Weston finds a weston.ini during unit tests, it will load it and all the modules it asks for. We need a way to prevent loading arbitrary modules from the command line. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
U. Artie Eoff authored
Only accept specific literal values from the environment variable WESTON_LIBINPUT_LOG_PRIORITY... "debug", "info", or "error". Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
-
Ander Conselvan de Oliveira authored
The error handling for the function that writes the encoded frame on the disk was bogus, always assuming the buffer supplied to the encoder was too small. That would cause a bigger buffer to be allocated and another attempt to encode the frame was done. In the case of a failure to write to disk (due to ENOSPC, for instance) that would cause an endless loop. Possibly-related-to: https://bugs.freedesktop.org/show_bug.cgi?id=69330
-
Pekka Paalanen authored
See 918f2dd4 Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Bill Spitzak authored
Filter sampling outside the source image can leak black into the edges of the desktop image. This is most easily seen by scaling the default tiled image with this weston.ini: # no background-image and no background-color background-type=scale-crop
-
Ander Conselvan de Oliveira authored
Moving a maximized surface with the pointer is already not possible, so make the behavior with touch consistent. https://bugs.freedesktop.org/show_bug.cgi?id=78208
-
Ander Conselvan de Oliveira authored
The check to avoid calling weston_keyboard_set_focus() for a seat that didn't have a keyboard in restore_focus_state() was cheking the wrong seat (the one from the previous loop). That caused a crash when switching workspaces if there was an extra seat that didn't have a keyboard. https://bugs.freedesktop.org/show_bug.cgi?id=78349
-
Ander Conselvan de Oliveira authored
If simple-touch ran on a compositor with multiple seats, and the first one happened to have the touch capability while the second one didn't, the handler for seat capabilities would destroy the wl_touch device it created on the first call for the first seat when it was called a again for the second seat that has not touch capabilities. Fix this problem by creating a separate struct for each seat. https://bugs.freedesktop.org/show_bug.cgi?id=78365
-
Ander Conselvan de Oliveira authored
Views that extend past the bottom of the output are still visible after the workspace animation ends but before its layer is hidden. When the layer was hidden, nothing would cause those regions to be repainted, leading to artifacts. https://bugs.freedesktop.org/show_bug.cgi?id=78363
-
Bryce W. Harrington authored
Quells warning: clients/keyboard.c: In function ‘keyboard_handle_key.isra.5’: clients/keyboard.c:556:11: warning: ‘label’ may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
-
- May 06, 2014
-
-
U. Artie Eoff authored
If data is NULL, then we jumped to error which attempts to dereference data. Instead, just close(fd) and return when data is NULL. Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
-