Commit graph

35 commits

Author SHA1 Message Date
Kristian Høgsberg
af867cc2f7 compositor: let the shell wake up the compositor
When compositor enters SLEEPING state, the shell plugin goes locked. If
compositor wakes up itself, it will fade in while the shell may not yet
have a lock surface to show.

Fix this by assigning wake-up to be called from the shell, if the
compositor is SLEEPING. The shell may wait for the lock surface request,
and only then wake up the compositor. The compositor will fade in
directly to the lock screen.

krh: original patch for compositor.c
ppaalanen: integration and shell.c changes

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 14:19:32 -05:00
Pekka Paalanen
9ef3e012d6 desktop-shell: screen locking protocol
Add protocol and functions for supporting screen locking, triggered by
activity timeout.

After activity timeout, compositor starts the fade to black, and then
enters SLEEPING state. At that point it calls lock() in the shell
plugin.

When input events trigger a wakeup, unlock() in the shell plugin is
called. This sends prepare_lock_surface event to the desktop-shell
client. The screen stays locked while the compositor starts fade-in.

At this point, desktop-shell client usually creates a surface for the
unlocking GUI (e.g. a password prompt), and sends it with the
set_lock_surface request. The compositor supposedly shows and allows
interaction only with the given lock surface (not yet implemented).

When desktop-shell has authenticated the user, or instead of issuing
set_lock_surface, it sends the unlock request. Upon receiving the unlock
request, the shell plugin unlocks the screen.

If desktop-shell client dies, the screen is unlocked automatically.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 14:18:50 -05:00
Kristian Høgsberg
c4693c4ab4 Install desktop-shell in $prefix/libexec 2011-11-14 14:57:17 -05:00
Kristian Høgsberg
46770139bc shell: Set initial toplevel position in map callback 2011-11-09 12:40:08 -05:00
Kristian Høgsberg
32e24cc628 compositor: Split shell->attach into map and configure
The shell module only needs to deal with attach when it's either the initial
attach or when the attach changes the size of the surface.  In case of
initial attach, the shell needs to pick a position for the surface and a
place in the surface stack.  We split this case out as a new shell->map
callback.  The other case is split into the shell->configure callback,
where the shell may adjust the surface position or reject the new size.
2011-11-09 12:07:35 -05:00
Pekka Paalanen
bbe605241d compositor: only authorized client can bind desktop_shell
Check, that only the desktop-shell client spawned by the compositor
(desktop-shell plugin) is allowed to bind to desktop_shell interface.
Other clients will receive an error like:

  wl_display@1.error(desktop_shell@20, 0,
  "permission to bind desktop_shell denied")

The error has the proper object id and interface type.

Note: desktop-shell cannot be started manually anymore, it has to be
started by the compositor automatically.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-03 15:16:39 -04:00
Pekka Paalanen
6cd281a023 desktop-shell: launch from the compositor
Fork and exec desktop-shell in the compositor. This is a way to create
an authenticated client. Later, the desktop-shell interface will be
reserved for this client only.

For exec to work, the compositor should be started from the
wayland-demos' root directory.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-03 15:16:19 -04:00
Pekka Paalanen
02ebfb1276 compositor: fix drag segfault
Without this fix, the dnd demo would make the demo compositor crash in
shell.c:drag_offer() because resource->data is NULL.

Initialise resource->data in shell_create_drag().

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-10-24 15:35:09 -04:00
Kristian Høgsberg
d6e5525a20 x11: Manage xserver focus better 2011-10-11 23:41:17 -04:00
Kristian Høgsberg
f0d9116fc8 x11: Add a destroy listener for X11 surfaces 2011-10-11 22:44:23 -04:00
Kristian Høgsberg
a4a42f0ab5 shell: Reject moving or resizing toplevel windows 2011-09-08 16:56:57 -04:00
Kristian Høgsberg
7584062153 Add a desktop_shell interface
Mostly a toy-thing for now, to allow prototyping a desktop-shell client.
2011-09-06 13:48:16 -04:00
Kristian Høgsberg
4eaa830381 compositor: Repick surface when grab ends
We were doing it manually in a few places and forgetting it in the
implicit grab case.
2011-09-06 13:41:47 -04:00
Kristian Høgsberg
9ebcf94b83 Use wl_resource_* error functions 2011-09-01 09:54:57 -04:00
Kristian Høgsberg
97d44aa58b Pass resources to functions that take object references 2011-08-29 17:12:37 -04:00
Kristian Høgsberg
d9551a3377 compositor: drop wl_display_add_object() 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
904055a652 compositor: Make all exported objects wl_resources 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
a691aeefd7 compositor: Track opaque region of a surface 2011-06-23 22:48:37 -04:00
Kristian Høgsberg
b8a983395d compositor: Add helper to damage surface below 2011-06-23 21:00:04 -04:00
Kristian Høgsberg
8f0ce05f52 compositor: Send out more detailed output events 2011-06-21 11:16:58 -04:00
Kristian Høgsberg
7a5c979f4c Move map requests to shell 2011-06-20 10:45:24 -04:00
Benjamin Franzke
4721a3c912 Make use of wl_resource.destroy_listener_list for surfaces. 2011-05-06 16:03:33 -04:00
Kristian Høgsberg
6c709a3e4f Fix warnings and symbol visibility from missing CFLAGS 2011-05-06 14:52:41 -04:00
Kristian Høgsberg
1c5621840b compositor: Split backends into modules 2011-05-02 22:09:20 -04:00
Kristian Høgsberg
2e94d1120a compositor: Remove unused surface matrix, add optional transform 2011-05-02 13:47:51 -04:00
Kristian Høgsberg
02ec0a5d3a compositor: Support loadable shells
The shell module is responsible for implementing the higher level
compositor behavior.  We default to the desktop-lite shell built in to
the compositor.
2011-04-23 13:04:11 -04:00
Kristian Høgsberg
10f097e8dd Only invoke shell button bindings if there's a pointer focus surface 2011-04-13 11:52:54 -04:00
Kristian Høgsberg
0793756d52 Move shell bindings to shell.c 2011-04-12 22:09:42 -04:00
Benjamin Franzke
ec4d342aa9 Support per surface frame events
This fixes tearing with multi head.
2011-03-17 11:54:35 +01:00
Kristian Høgsberg
31bd6c7ab1 Use pixman regions to reduce repainting
For now, we just use glScissor and clip to the extent of the damage region,
but we can do even better by clipping the repaint to the region rectangles.
2011-02-13 13:26:39 -05:00
Kristian Høgsberg
0ce245761c Add initial basic support for fullscreen surfaces 2011-01-28 15:18:33 -05:00
Kristian Høgsberg
027931bd33 Define the shell resize enumeration in the xml spec 2011-01-21 21:57:55 -05:00
Kristian Høgsberg
dd4046ae56 Take away pointer focus during server grabs
This lets the client restore the pointer image when the grab ends.
2011-01-21 17:11:15 -05:00
Kristian Høgsberg
ae6c8a6d73 First attempt at selection support 2011-01-19 14:25:12 -05:00
Kristian Høgsberg
4cca349349 Split shell object out from compositor.c into its own file 2011-01-18 07:53:49 -05:00