Commit Graph

253 Commits

Author SHA1 Message Date
Kristian Høgsberg
1ec0c31596 compositor: Hide surfaces by setting surface->output to NULL
This way we can still use surface->link when a surface is not in
the main compositor surface list and don't need the hidden_surface
wrapper object.  Also, setting surface->output to NULL will block
the surface frame callback until we put the surface back into the
main list.  This has the effect of blocking animations while a surface
isn't visible.
2011-11-15 16:43:25 -05:00
Pekka Paalanen
bfbb26bdb2 desktop-shell: add unlock dialog
The unclock dialog is just a normal window with a green ball in it. When
you click the ball, the screen will be unlocked.

Made for testing the screen locking.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 16:43:25 -05:00
Pekka Paalanen
77cbc951cb window: clean up redraw and focuses on destroy
Currently, the way to destroy a window in a response to an event (e.g.
button click), is to put a task into the deferred list with
display_defer(). The task will then call window_destroy() from outside
event handling code.

As events are handled, it is possible that the deferred list contains
also the redraw task for this window. As the execution order of these
tasks is unknown (redrawing a freed window is a bug) and redrawing
something that goes away immediately is not useful, the redraw task must
be removed on window_destroy().

'struct input' contains pointers to windows currently in focus for that
input device. These pointers must also be cleared on window_destroy().
This fixes a use-after-free bug for the unlock dialog in desktop-shell
(future commit).

As an irrelevant minor cleanup, window::grab_device member is not used
anywhere, and is removed.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 16:43:24 -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
Pekka Paalanen
09d65d0e64 config: fix boolean parsing
The rest of the line contains the newline, so cannot match simply 'true'
or 'false'.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 09:04:56 -05:00
Kristian Høgsberg
fc32c394e7 config: Don't print warning when XDG_CONFIG_HOME isn't set
According to the spec, it's ok for this not to be set and just means that
we should default to $HOME/.config.
2011-11-15 09:02:24 -05:00
Pekka Paalanen
668dd56918 window: add a helper for config file paths
Add a helper function, that constructs a path to a config file from
XDG_CONFIG_HOME environment variable, by the rules of
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

Make desktop-shell find its config file from XDG_CONFIG_HOME. This
allows to have a personal config file without continuously fighting with
git about wayland-desktop-shell.ini.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2011-11-15 08:57:01 -05:00
Kristian Høgsberg
ac3a59a0d1 window: Add a cheesy parser for ini-files, use it in desktop-shell 2011-11-14 22:51:02 -05:00
Kristian Høgsberg
c4693c4ab4 Install desktop-shell in $prefix/libexec 2011-11-14 14:57:17 -05: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
Casey Dahlin
fb39963cc9 Update .gitignores 2011-10-28 13:32:17 -04:00
Kristian Høgsberg
ac5098f11a Merge remote-tracking branch 'robster/rob/pointer-fixes' 2011-10-25 09:07:12 -04:00
Rob Bradford
8bd35c7770 window: Avoid setting an invalid surface for the pointer
If we failed to load the pointer image to the surface then do not create a
buffer from a NULL surface and do not attach that to the device.
2011-10-25 12:20:51 +01:00
Rob Bradford
21223bf6d1 window: Report an error if we cannot load the pointer files 2011-10-25 12:19:36 +01:00
Eugeni Dodonov
397b908d7b Add missing include for gio.h.
This is needed by GFile, used by view.c.

Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
2011-10-24 11:58:24 -04:00
Kristian Høgsberg
bf8bd5aa3a cairo-util: Fix another last-minute typo 2011-10-20 14:44:48 -04:00
Kristian Høgsberg
27d3866045 cairo-util: Add helper to load jpeg files 2011-10-20 13:11:12 -04:00
Kristian Høgsberg
9ef9e0ecf9 simple-egl: Remove leftover wl_visual variable 2011-10-19 21:16:58 -04:00
Kristian Høgsberg
bcee9a4b25 desktop-shell: Add beginning of pop-up menu to panel 2011-10-12 00:36:16 -04:00
Benjamin Franzke
1a89f28c7d gears: Fail if compiled without cairo-egl 2011-10-07 10:06:01 +02:00
Benjamin Franzke
0c99163d9b window: Create a cairo device for each egl config 2011-10-07 10:06:01 +02:00
Benjamin Franzke
47eb8f4e91 window: Remove display_flush_cairo_device
Rather add a flush_surface utility that
flushed the cairo_device thats associated to a surface.
2011-10-07 10:05:57 +02:00
Kristian Høgsberg
e4fb78de8f Handle compositors without wl_shell 2011-09-21 17:43:32 -04:00
Kristian Høgsberg
41abb2865e view: Fix reference to wayland-glib.h 2011-09-21 08:47:55 -04:00
Kristian Høgsberg
e28d05b0ad window.c: Move window items to window.c 2011-09-20 21:43:54 -04:00
Kristian Høgsberg
3a69627f43 window: Stop using glib mainloop in toy toolkit 2011-09-19 17:28:55 -04:00
Kristian Høgsberg
1e164b9afd Move rounded_rect() to cairo-util.c 2011-09-19 17:26:44 -04:00
Kristian Høgsberg
547da5afc9 terminal: Make -f (fullscreen) option work again 2011-09-19 17:26:30 -04:00
Kristian Høgsberg
7e69000556 desktop-shell: Scale background image to output size 2011-09-08 18:18:02 -04:00
Kristian Høgsberg
f8ab46e149 window: Default to toplevel windows 2011-09-08 16:56:38 -04:00
Kristian Høgsberg
67680c122d desktop-shell: Add launcher for the Wayland terminal 2011-09-08 11:48:53 -04:00
Kristian Høgsberg
0c29eb292e clients: Add a simple desktop-shell app
This just provides the background surface and the top panel.
2011-09-06 18:02:34 -04:00
Kristian Høgsberg
900b226ac1 window: Add enter/leave handlers 2011-09-06 14:33:52 -04:00
Benjamin Franzke
4b87a13974 clients: Fix typos
And forgotten display_create conversion in view.c.
2011-09-01 10:36:53 +02:00
Benjamin Franzke
e8e0e6e2db Update gitignore 2011-08-31 16:25:32 -04:00
Benjamin Franzke
91eacca38b Remove egl display type setenv hack
No longer needed with mesa 7.12-devel egl display autodetection.
2011-08-31 16:25:18 -04:00
Kristian Høgsberg
f389cacc20 Move away from visuals and just use EGLConfigs or shm format tokens 2011-08-31 16:21:38 -04:00
Kristian Høgsberg
6da3812f0a gears: Don't schedule redraw, just draw from frame callback 2011-08-29 17:12:37 -04:00
Kristian Høgsberg
2821aaaf9c simple-shm: Fix inverted logic 2011-08-29 17:12:37 -04:00
Kristian Høgsberg
2415990461 clients: Remove a few unused variables 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
26130866c6 terminal: Fix unused return value warnings 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
9de79a92a6 window.c: Drop global handler argument
We can just register a global handler directly on the wl_display now.
2011-08-29 17:12:36 -04:00
Kristian Høgsberg
a8d1fa762e clients: Bring clients up to date 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
f790c79ec7 Use wl_display_bind() for binding to globals 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
334182062f Use the new wl_callback interface 2011-08-29 17:12:36 -04:00
Kristian Høgsberg
8417d432f5 screenshot: A couple of minor tweaks 2011-07-27 05:58:57 -07:00
Tiago Vignatti
4d0d2037ea screenshot: use gdk-pixbuf for writing png images
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2011-07-26 08:23:37 -07:00
Kristian Høgsberg
2669f72e95 clients: Rename simple-client to simple-egl 2011-07-21 08:42:58 -07:00
Tiago Vignatti
93165e3e23 configure: set up simple clients independently from the others
Namely, simple-client and simple-shm.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2011-07-21 08:42:58 -07:00
Tiago Vignatti
e81fe8346c clients: simple-shm: remove unused libraries and headers
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2011-07-21 08:42:58 -07:00