- Dec 02, 2011
-
-
Pekka Paalanen authored
The signal mask is inherited over fork() and exec(), we need to explicitly reset it. This makes the screensaver killing work in shell.c. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
shell.c and tablet-shell.c had almost the same code for forking their special shell client. Generalise this code and put it into wlsc_client_launch() in compositor.c. Improve error cleanup and reporting in wlsc_client_launch(). Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Add WLSC_COMPOSITOR_IDLE state to the possible compositor internal states, and fix the drm backend to restore the previous state instead of forcing ACTIVE. Normally, the compositor only uses the ACTIVE and SLEEPING states. The IDLE state is another active state, reserved for the shell, when the shell wants to have unlock() calls on activity, but the compositor cannot be SLEEPING. Use the IDLE state to fix exposing the unlock dialog while a screensaver is animating. Without this fix, is it impossible to activate the unlock dialog without waiting for a second idle timeout that really puts the compositor into SLEEPING. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Reorder code in fade_frame() to that if shell->lock() calls wlsc_compositor_wake(), the fade animation will run again. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Screensavers become visible the first time only after the compositor has gone to sleep state. Therefore, to see screensaver in the start, wake up the compositor. After a second idle timeout, the compositor will stay sleeping. We could also not apply this patch. It would mean the screensavers would be visible only with the unlock dialog, and not become visible automatically. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Implement the basics of screensaver surface management. Exec'ing and killing the screensaver client is punted for later. When a surface registered as a screensaver is mapped, it stays hidden if the screen is not locked, or it is added to the compositor visible surfaces list if the screen is locked. The map() is restructured to set initial position first, and stacking next. This allows SHELL_SURFACE_SCREENSAVER share positioning with SHELL_SURFACE_FULLSCREEN, while show_screensaver() does its own wlsc_surface_configure() call. Also fix centering to the given fullscreen output, not the first output. Another bug fix: previously configure() would call wlsc_surface_configure() unconditionally, which assigns an output to the surface. While the compositor is locked, if an application resizes its window, we hit configure() and assign an output while the surface is not in compositor->surface_list. This leads to invalid memory access on the next call to wlsc_surface_damage_below(). Fix this by not calling wlsc_surface_configure() for surfaces that are not visible. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
- Dec 01, 2011
-
-
Pekka Paalanen authored
So far nothing prevented a client for registering a surface as one type and then as another type. With some special types, this would lead to corrupted wl_lists. Add a function, that either resets the surface type or posts an error to the client. In case of an error, the set type operation must be aborted. Change the type name SHELL_SURFACE_NORMAL to SHELL_SURFACE_NONE, as there is nothing normal in the "none" type which just means uninitialised. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
- Nov 30, 2011
-
-
Pekka Paalanen authored
Create instances from outputs, and register the surfaces as screensavers. Support multiple "Mode" instances. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Add output_mode_handler as a display property. This exposes only configured outputs, that is the current mode info is already received, to aqpplications. The handler is also called for mode changes on an existing output. This simplifies the implementation in toytoolkit as we can defer the handler calls from wl_output binding time to when we receive the current mode. We do not need separate handlers for "new output" and "mode changed". A plain "new output" handler would be problematic as the current mode is not known yet. Also add delete_handler hook for outputs, but that will never be called for now, as the protocol lacks a way to signal output disconnections. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Add the screensaver interface to the desktop-shell protocol file. Also add stubs for it in the compositor, and make wscreensaver to bind to the screensaver interface. Wscreensaver gets a new option --demo to retain the current behaviour as a regular wayland client. When a screensaver application starts, it should bind to the screensaver interface, enumerate all outputs, create a surface per output, and register those surfaces via screensaver::set_surface request. Then it continues with the usual animation loop, waiting for frame events. The compositor will decide, when the given screensaver surfaces are displayed. A screensaver application should respond to outputs coming and going away by creating and destroying surfaces. The compositor is supposed to activate a screensaver by exec'ing it, and stop the screensaver by killing the client process. Only one client may be bound to the screensaver interface at a time. If there already is a client, the compositor could either kill it first, or not exec a new one. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
- Nov 29, 2011
-
-
Pekka Paalanen authored
Do not allow multiple wl_shell_surface objects to be created for a wl_surface object. Multiple shell_surface objects would confuse the compositor as they contain separate instances of the shell-private data. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Leftovers from an intermediate patch set, the proper function name is shell_get_shell_surface. Cosmetic change. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Since it is the desktop-shell plugin in the compositor that offers both wl_shell global interface and wl_shell_surface interface, those are not available on the tablet-shell plugin. The tablet-shell client uses the toytoolkit, so toytoolkit must work somehow even without wl_shell. Turn all operations in toytoolkit that would require wl_shell or wl_shell_surface into no-ops. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
When a window destroyed, if any input had the window in keyboard focus, the keyboard focus is reset to NULL. A new keyboard focus is set only, if the user clicks something. If the user presses a key instead of clicking, the key press event is sent to the client which has NULL keyboard focus, triggering a segfault in window_handle_key(). Fix the segfault by ignoring the key event, if there is no target window. I triggered this segfault by clicking the unlock dialog away, and then pressing a key. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
get_shell_surface() returns NULL, if the client has not created or has destroyed the wl_shell_surface object. All but one use of get_shell_surface() just retrieve the surface type, so just fall back to SHELL_SURFACE_NORMAL there. Resize hot-key binding really needs the wl_shell_surface object, as that is the only way to send configure events. For surfaces without a wl_shell_surface, simply do not resize them. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Remove shell_priv member from wlsc_surface, and replace it by a search through the wl_surface destroy_listener_list. This technique avoids any "extension" members in the wlsc_surface structure. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Change desktop-shell protocol to use wl_shell_surface instead of wl_surface. Adapt the desktop-shell client and the shell plugin. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Fix two bugs: - if there are no backgrounds at all, the background pointer would have been bogus. Lead to a segfault. - if the hidden_surface_list is empty, wl_list_insert_list() would corrupt the list. Lead to a hang in pick_surface(). Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Protocol changes in Wayland core introduced a new interface wl_shell_surface, and moved all wl_shell surface methods into it. Adapt the compositor and its Wayland backend, shell plugin, and all clients to the new interface. Depends on the Wayland core commit "protocol: introduce wl_shell_surface" Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
- Nov 27, 2011
-
-
Kristian Høgsberg authored
-
- Nov 26, 2011
-
-
Kristian Høgsberg authored
For a start, this is just to we can run and test the corresponding compositor plugin and keep it from bit-rotting.
-
Kristian Høgsberg authored
-
- Nov 23, 2011
-
-
Kristian Høgsberg authored
The new protocol splits dnd/selection from wl_shell and allows us to move the implementation out of shell.c.
-
Benjamin Franzke authored
-
Benjamin Franzke authored
-
Benjamin Franzke authored
Since set_toplevel would overwrite set_lock_surface.
-
Benjamin Franzke authored
-
Kristian Høgsberg authored
-
Kristian Høgsberg authored
-
Kristian Høgsberg authored
We have to provide our own bind callback and add a wlsc_compositor pointer to wlsc_input_device, but on the whole it's nice cleanup.
-
Kristian Høgsberg authored
-
Kristian Høgsberg authored
-
Pekka Paalanen authored
Enumerate the different surface purposes for the shell: background, panel, lock surface, and normal (other) surfaces. Instead of testing wlsc_surface pointers against known pointers, check the purpose field. This change will ease implementing per-output background, panel, etc. when the number of "known" surface pointers grows dynamically. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Pekka Paalanen authored
Add a pointer to wlsc_surface for shell-private data. This is a temporary solution. Add struct shell_surface, where you can add any shell-private data members related to a wlsc_surface. The getter function takes care of creating the private data if it does not exist yet. Not used anywhere yet. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
-
Kristian Høgsberg authored
-