summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-01-25compositor: Pull prepare_render and present callouts into repaintKristian Høgsberg6-129/+47
This dramatically simplifies the backend repaint abstractions and paves the way for moving overlay and cursor setup into the backend.
2012-01-25compositor: Move repaint loop into a backend functionKristian Høgsberg6-3/+52
We've trimmed down the actual repaint loop to just iterating through the surface list and calling weston_surface_draw(), so we push that to the backend without too much code duplication.
2012-01-25compositor: Insert the fade surface in the surface listKristian Høgsberg1-31/+37
This lets us repaint it in the repaint loop instead of the fade_output() special case.
2012-01-25compositor: Move shader setup to weston_surface_draw()Kristian Høgsberg2-12/+21
2012-01-25compositor: Compute whether or not a surface is overlappedKristian Høgsberg2-1/+18
2012-01-25compositor: Remove special casing of fullscreen surfacesKristian Høgsberg1-8/+1
This was supposed to draw black borders around a fullscreen surface that was smaller than the output. We don't want to special case that in the repaint loop, but may use a different shader or such. And we want the surface to have an opaque region that covers the output so that that will eliminate overdraw of lower surfaces.
2012-01-25compositor: Do the per surface clip region math in weston_surface_draw()Kristian Høgsberg1-15/+13
2012-01-25compositor: Assign surface damage before setting up scanout buffersKristian Høgsberg1-5/+6
2012-01-25desktop-shell: Build in sensible defaultsKristian Høgsberg6-15/+32
This adds a default background pattern and a terminal launcher in case we don't have a config file.
2012-01-25desktop-shell: Support tiling of background imagesKristian Høgsberg1-7/+31
2012-01-25cairo-util: Add png loader and image type sniffingKristian Høgsberg4-13/+186
2012-01-25desktop-shell: Fall back to solid color if there's no background imageKristian Høgsberg2-2/+9
2012-01-25cairo-util: Return NULL instead of exit() on jpeg load failureKristian Høgsberg1-0/+13
2012-01-25Install terminal as weston-terminalKristian Høgsberg1-7/+18
2012-01-24Revert "weston: Drop priviledges early, and seteuid when needed"Kristian Høgsberg3-20/+0
This reverts commit fc6ccb868fa735ee9c6592806f381aa1262bf0b2. We still need root permissions for drmDrop/SetMaster. Without integration with ConsoleKit or systemd we also don't have access to /dev/dri/cardX in the case where we open a new VT.
2012-01-24weston: Drop priviledges early, and seteuid when neededBenjamin Franzke3-0/+20
2012-01-24setuid: Operate relative to $(DESTDIR)Benjamin Franzke1-2/+2
2012-01-24window: Fix sending button events when there's no grabNeil Roberts1-5/+5
The code which sends the button events was checking whether there is a focus widget with a button handler but then always sending the button event to the grab widget. If the grab widget is different from the focus widget at this point then it will check the wrong widget for a button handler and potentially crash. It is also possible for there to be no grab widget here in the following situation: 1. Press and hold down the left mouse button 2. Press and hold down the right mouse button 3. Release the left mouse button 4. Release the right mouse button In this case the grab will be released at step 3 because the code only keeps track of the grab for one button. Then it will try to send the release event for the right mouse button to a NULL widget so it will crash.
2012-01-20evdev: fix uninitialised pointer valueTiago Vignatti1-0/+2
==30224== Conditional jump or move depends on uninitialised value(s) ==30224== at 0x40EE3A0: evdev_flush_motion (evdev.c:284) ==30224== by 0x40EE6DC: evdev_input_device_data (evdev.c:352) ==30224== by 0x4034710: wl_event_source_fd_dispatch (event-loop.c:76) ==30224== by 0x4035171: wl_event_loop_dispatch (event-loop.c:462) ==30224== by 0x4032F76: wl_display_run (wayland-server.c:785) ==30224== by 0x8050972: main (compositor.c:2183) Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-01-19gears: Make window transparentKristian Høgsberg1-2/+2
We need this for the window decorations.
2012-01-19window: Use CAIRO_OPERATOR_OVER for rendering the menuKristian Høgsberg1-1/+2
We forgot to switch back from CAIRO_OPERATOR_SOURCE, which is broken, but also hits a broken fallback in cairo-gl.
2012-01-19configure: Add --enable-setuid-installKristian Høgsberg2-0/+21
This adds support for installing the compositor setuid.
2012-01-19compositor: initialise segv_action.sa_maskPekka Paalanen1-0/+1
Valgrind complained sa_mask member is not initialised, fix that. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19desktop-shell: don't crash on menuPekka Paalanen1-1/+7
Add dummy menu callback function, so we don't crash after every time someone opens the menu. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19shell: deal with weston_compositor_pick_surface() = NULLPekka Paalanen1-1/+1
I could crash Weston by trying to open another menu from a panel while one menu from it was already showing. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff40a9872 in popup_grab_focus (grab=0x761968, time=4130706528, surface=0x0, x=-227, y=15) at shell.c:440 440 if (surface->resource.client == client) { (gdb) bt 0 0x00007ffff40a9872 in popup_grab_focus (grab=0x761968, time=4130706528, surface=0x0, x=-227, y=15) at shell.c:440 1 0x0000000000406977 in weston_device_repick (device=0x70b4e0, time=4130706528) at compositor.c:360 2 0x0000000000406a36 in weston_compositor_repick (compositor=0x619960) at compositor.c:382 3 0x0000000000406ac8 in destroy_surface (resource=0x6fc6f0) at compositor.c:397 4 0x00007ffff7bd33d8 in destroy_resource (element=0x6fc6f0, data=0x7fffffffd9fc) at wayland-server.c:355 5 0x00007ffff7bd8d98 in for_each_helper (entries=0x757808, func=0x7ffff7bd332c <destroy_resource>, data=0x7fffffffd9fc) at wayland-util.c:264 6 0x00007ffff7bd8dd4 in wl_map_for_each (map=0x757808, func=0x7ffff7bd332c <destroy_resource>, data=0x7fffffffd9fc) at wayland-util.c:270 7 0x00007ffff7bd34dc in wl_client_destroy (client=0x7577d0) at wayland-server.c:385 8 0x00007ffff7bd2e36 in wl_client_connection_data (fd=17, mask=1, data=0x7577d0) at wayland-server.c:187 9 0x00007ffff7bd5bde in wl_event_source_fd_dispatch (source=0x74cda0, ep=0x7fffffffdae0) at event-loop.c:76 10 0x00007ffff7bd665b in wl_event_loop_dispatch (loop=0x618900, timeout=-1) at event-loop.c:462 11 0x00007ffff7bd42a9 in wl_display_run (display=0x6188b0) at wayland-server.c:785 12 0x000000000040b1e1 in main (argc=1, argv=0x7fffffffdef8) at compositor.c:2182 Modify popup_grab_focus() to deal with a NULL surface. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19window: menu leak fixesPekka Paalanen4-36/+30
When a menu self-destructs, free also the widget and struct menu. As menus are self-destructing, it does not make sense to store the window pointer, since we cannot clear it automatically. Therefore, rename window_create_menu() to window_show_menu() that does not return the window pointer. It also calls window_schedule_redraw() internally. Fixes Valgrind reported memory leaks. The alternative would be to explicitly destroy the menu in application's menu callback. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19resizor: free the widget on destroyPekka Paalanen1-0/+1
Plugs a memory leak. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19window: remove pointers to widget on destroyPekka Paalanen1-3/+8
Input devices may hold a pointer to the widget being destroyed. Reset such pointers in widget_destroy(). This fixes a use-after-free in window_destroy(), if an application destroys its widgets before the window. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19window: destroy frame in window_destroy()Pekka Paalanen1-0/+16
Fix a memory leak reported by Valgrind, by destroying the window decorations widget, if it exists. All widget pointers returned from toytoolkit to the application should be destroyed by the application explicitly. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-18compositor: Flush surface damage to surface below on destroyKristian Høgsberg1-0/+16
When we destroy a surface, we damage the surface below so that the area exposed by the disappearing surface will be repainted. However, if that surface also is destroyed, the damage information is lost and we fail to repaint that area. This commit introduces weston_surface_flush_damage(), which flushes the surface damage the the surface below when a surface is destroyed. When multiple surfaces are destroyed at the same time, the damage now accumulates and sinks down through the surface stack as it should.
2012-01-18drm: Don't print warning if cursor stride isn't rightKristian Høgsberg1-4/+6
gbm_bo_create_from_egl_image() should catch this based on the GBM_BO_USE_CURSOR_64X64 flag. It currently doesn't so we end up with a cursor buffer with invalid stride.
2012-01-18clients: Allow compiling with the cairo glesv2 backendKristian Høgsberg3-24/+52
This disables gears and wscreensaver, which use full GL.
2012-01-18desktop-shell: fix the unlock dialog decorationsPekka Paalanen1-1/+1
The decorations were not responding, could not move or resize the dialog, and it painted with a black shade. When the dialog is created, schedule a resize instead of a repaint. The resize will initialise the widget tree, and let everything draw and work as it should. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-18tty: Use SIGUSR1 for both enter and leave signalsKristian Høgsberg1-23/+14
Now that we track has_vt, we can use the same handler for both enter and leave.
2012-01-18tty: Switch back to launch tty if we switched awayKristian Høgsberg2-8/+29
2012-01-18drm: Cancel any scheduled repaints in the leave vt handlerKristian Høgsberg2-5/+19
If we don't cancel the repaint, we end up pointlessly redrawing the output. What's worse is that pageflipping to the new buffer eventually fails and we miss the finish_frame callback, leaving the compositor stuck when we re-enter the vt.
2012-01-18drm: Reset kms mode on vt enterKristian Høgsberg1-0/+23
Normally the repaint will trigger a pageflip, which flips back to our fb, but that doesn't work if the kms output has been turned off or set to a different mode.
2012-01-18drm: Complain if pageflip failsKristian Høgsberg1-3/+6
We still don't handle the error in any way, but there's not much we can do. It's typically a case of not having drm master."
2012-01-17shell: Set desktop-shell deathstamp at initial launchKristian Høgsberg1-2/+2
Timestamp 0 is a valid timestamp and we can't use that as an uninitialized timestamp.
2012-01-17wscreensaver: get decorations backPekka Paalanen1-38/+23
In the great toytoolkit widget revolution, wscreensaver demo mode lost its window decorations. Bring them back. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-17shell: respawn desktop-shell if it diesPekka Paalanen1-0/+23
If the desktop-shell client goes away for any reason, respawn it. To avoid harmful looping, limit the respawning to 5 times within 30 seconds, and then give up. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-16tty: Open a new vt if not running on a VTKristian Høgsberg1-8/+42
This is typically when launcing from a pty such as an X (or Wayland) terminal or from an ssh session. Opening a new vt typically requires root priviledges, so weston must be setuid root or laucnhed as root for this to work.
2012-01-16window: remove duplicate widget_resize_handler_tPekka Paalanen1-3/+0
Fixes the following build failure: In file included from window.c:58:0: window.h:194:16: error: redefinition of typedef 'widget_resize_handler_t' window.h:178:16: note: previous declaration of 'widget_resize_handler_t' was here Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-16compositor: Install a SEGV handler to try and clean up the VT if we crashKristian Høgsberg1-1/+32
2012-01-16tty: Fix order of VT ack/release ioctls and the vt handlerKristian Høgsberg1-4/+4
We can only set up once we've acquired the VT and we shouldn't release the VT until we've cleaned up. Before we would release the VT first, and then race to drop drm master as X tried to get drm master. Which would kill X.
2012-01-16evdev: Drop noisy debug messages on vt swtichKristian Høgsberg1-4/+1
2012-01-16compositor-drm: Exit if we failed to get drm masterKristian Høgsberg1-2/+7
We can do anything without drm master. Also log an error in case we fail to drop it, which will be trouble for whoever we're switching to.
2012-01-15xserver: Create WM window, handle client messagesKristian Høgsberg1-0/+77
2012-01-15evdev: Correct warning on missing input deviceOlivier Le Thanh Duong1-1/+1
2012-01-15xserver: Just dup fd instead of two fcntls to get a non-O_CLOEXEC fdKristian Høgsberg1-5/+5
Yeah, it's the same number of lines of code, but this actually checks the error return.