summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-05-20zoom: Use pixels instead of GL coordinateswip/damage-coordinatesJason Ekstrand1-24/+14
Previously, the zoom functions used GL coordinates natively which doesn't work with the new output matrix calculations. This changes zoom to work in pixel coordinates to match the new output matrix format. This also cleans up the math in the zoom code substantially.
2014-05-20pixman-renderer: Simplify the buffer-to-output matrix computationJason Ekstrand1-123/+8
Now that we have a buffer-to-surface matrix and the global-to-output matrix is usable, we can remove a large chunk of confusing code from the pixman renderer. Hopefully, having this stuff in weston core will keep the pixman renderer from gettin broken quite as often.
2014-05-20Use pixel coordinates for weston_output.matrixJason Ekstrand2-68/+52
Previously, weston_output.matrix was in GL coordinates and therefore only really useful for the GL backend.
2014-05-20gl-renderer: Call glViewport after the context is made currentJason Ekstrand1-3/+3
2014-05-20weston_surface: Add surface-to-buffer and buffer-to-surface matricesJason Ekstrand2-0/+87
2014-05-20pixman-renderer: Add a weston_matrix_to_pixman_transform functionJason Ekstrand1-21/+21
2014-05-20Move the surface commit logic into weston_surface_commit_stateJason Ekstrand1-81/+34
2014-05-20Create a weston_surface_state structure for storing pending surface stateJason Ekstrand2-65/+49
This structure is used for both weston_surface.pending and weston_subsurface.cached.
2014-05-20Move weston_subsurface to after weston_surfaceJason Ekstrand1-51/+51
It makes more sense there.
2014-05-20simple-damage: Add a --rotating-transform flagJason Ekstrand1-9/+27
This flag instructs the weston-simple-damage client to change the wl_surface.buffer_transform on every commit. This tests the compositor for proper handling fo texture uploads even when the transform has changed but the buffer size hasn't.
2014-05-20simple-damage: Correct the help string to --use-viewportJason Ekstrand1-1/+1
2014-05-20wayland-backend: Add initial xdg_shell supportJason Ekstrand2-21/+108
2014-05-20simple-damage: Add support for wl_surface version 4Jason Ekstrand1-11/+36
2014-05-20Fix a copy+paste errorJason Ekstrand1-2/+2
2014-05-20simple-damage: Change the offset to make it more unevenJason Ekstrand1-8/+20
2014-05-20Add a client for testing compositor damage handlingJason Ekstrand2-0/+881
2014-05-18clients: Remove the window / user parameters from the menu functionJasper St. Pierre6-14/+12
We want the ability to create a detached menu.
2014-05-12window: Send ack_configure immediately from configure handlerKristian Høgsberg1-9/+1
Once we've updated the window state and scheduled a resize, we know that the next frame we send to the compositor will match the configured state. This means we can just ack the configure immediately and not jump through hoops to try to do it from the redraw stage.
2014-05-12window: Move the resize after interpreting the statesJasper St. Pierre1-8/+8
As the protocol says, the states determine how the width and height arguments should be interpreted, so it makes logical sense to do the interpretation after.
2014-05-12window: Set frame flags immediately when we handle the new states in configureJasper St. Pierre1-12/+14
2014-05-12shell: Make margin double-buffered state that's applied on commitJasper St. Pierre1-5/+12
2014-05-12shell: Don't use the helper methods in xdg_shell implementationsJasper St. Pierre1-28/+17
With most of the code in send_configure_for_surface, the helper methods don't give us that much benefit, so stop using them. We can't kill them off, as they're part of the shell interface and used by the WM.
2014-05-12shell: Centralize management of sending configure requestsJasper St. Pierre1-49/+63
Currently, there's a giant bug in how xdg-shell state management is done. If a client calls set_fullscreen and then set_maximized, it will get two configure events: => set_fullscreen <= configure(800, 600, [STATE_FULLSCREEN]) => set_maximized <= configure(800, 560, [STATE_FULLSCREEN, STATE_MAXIMIZED]) Since fullscreen takes precedence over maximized, the client will render full-screen at 800x600 first, and then 800x560 next. As a result, the surface gets the wrong size. This is because the code that sends out configure requests is "immediate" -- when an app calls set_maximized, we immediately send out the configure event that would have happened if we transitioned immediately into maximized mode. In wl_shell, this is correct behavior. However, in xdg-shell, this is wrong. State needs to be more carefully managed in xdg-shell, as states aren't exclusive. Pull all the code that sends out configure events out and send them centrally, based on Weston's on surface state management. This should work with both wl_shell and xdg_shell's strategies.
2014-05-12xdg-shell: Turn "activated" into a stateJasper St. Pierre5-66/+15
This drops two events, and makes new window decorations race-free with an attach in-flight.
2014-05-12terminal: Only add the new size to the title when we're resizingJasper St. Pierre3-14/+49
Add a new state_changed_handler callback to the window to know when the window has changed state; the terminal will use this to know when the window started and ended its resize operation, and modify the terminal's titlebar accordingly.
2014-05-12xdg-shell: Turn the resizing heuristics into an explicit stateJasper St. Pierre3-8/+30
Currently, there's a race condition. When resizing from the left, and a client attaches a buffer after the resize ends, you suddenly see the buffer jump to the right, because the resize ended while multiple attaches were in-flight. Making resize a state can fix this, as the server can now know exactly when the resize ended, and whether a commit was before or after that place. We don't implement the correct tracking in this commit; that's left as an exercise to the reader. Additionally, clients like terminals might want to display resize popups to display the number of cells when in a resize. They can use the hint here to figure out whether they are resizing.
2014-05-12xdg-shell: Rework the state systemJasper St. Pierre5-230/+205
The states system, so far, has been a complicated mix of weird APIs that solved a real race condition, but have been particularly ugly for both compositors and clients to implement.
2014-05-13xdg-shell: Rename set_transient_for to set_parentJasper St. Pierre5-25/+22
It's a confusing name that comes from the ICCCM. The ICCCM is best forgotten about. With the addition of the potential new "transient" role meaning a parent-relative toplevel like a long-lived popup, used for e.g. tooltips, the set_transient_for name will become even more confusing.
2014-05-13fullscreen: Remove dirty sizing trickJasper St. Pierre1-9/+0
xdg-shell mandates that the FULLSCREEN state means that we must match the size that we were configured to, at least by default. Other states or protocol extensions might relax this requirement, but at least for now implement the behavior specified in the protocol documentation.
2014-05-13fullscreen: Remove our own focused state trackingJasper St. Pierre1-18/+3
This is decided by xdg-shell now.
2014-05-12configure.ac: Bump version 1.4.93Kristian Høgsberg1-1/+1
This is the last RC before 1.5.
2014-05-12window: Ignore input events from subsurfacesAnder Conselvan de Oliveira1-5/+16
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
2014-05-12build: let 'make clean' remove logs/ againPekka Paalanen1-1/+1
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>
2014-05-12gitignore log files, now in root directoryBryce W. Harrington1-0/+3
[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>
2014-05-12desktop-shell: Fix order of desktop_shell messagesJonas Ådahl1-11/+14
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>
2014-05-09desktop-shell: Damage the black view when we remove itKristian Høgsberg1-0/+2
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
2014-05-09configure.ac: Fix indent for screen-share optionKristian Høgsberg1-1/+1
2014-05-09editor: Fix cursor positioning with pointer and touchAnder Conselvan de Oliveira1-10/+23
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
2014-05-09tests: rename xwayland testPekka Paalanen1-4/+4
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>
2014-05-09tests: load the right shell pluginPekka Paalanen1-0/+3
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>
2014-05-09tests: load the right xwayland pluginPekka Paalanen1-2/+4
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>
2014-05-09tests: use --no-configPekka Paalanen1-0/+2
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>
2014-05-09compositor: add --no-config command line optionPekka Paalanen2-2/+12
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>
2014-05-09libinput-seat: literal values for WESTON_LIBINPUT_LOG_PRIORITYU. Artie Eoff1-1/+8
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>
2014-05-09vaapi-recorder: Don't loop trying to write on out of space conditionAnder Conselvan de Oliveira3-18/+53
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
2014-05-09rpi: build fix for compute_rects debugPekka Paalanen1-2/+2
See 918f2dd4cfb8b177f67b45653efbbe4325cbe9dc Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-05-09desktop-shell: Fix black edges on scaled desktop patternBill Spitzak1-0/+2
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
2014-05-09shell: Don't allow maximized surfaces to be moved with touchAnder Conselvan de Oliveira1-1/+1
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
2014-05-09shell: Fix crash when restoring focus state during workspace changeAnder Conselvan de Oliveira1-1/+1
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
2014-05-09simple-touch: Handle multiple seats properlyAnder Conselvan de Oliveira1-15/+33
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