Switching display mode may happen when:
1. The fullscreen surface is at top most in fullscreen layer and with
"driver" method. Shell will switch output mode to match the surface
size. If no matched mode found, fall back to "fill" method.
2. The top fullscreen surface is destroyed or unset. Switch back to the
origin mode.
Specially the "either" word there is essential, so users don't confuse
thinking that both steps are needed.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Some GL implementations do not provide GL_EXT_read_format_bgra
extension.
Set a glReadPixels format based on whether the extensions is supported
or not, and use that format in all backends.
Add RGBA->BGRA swapping copy to screenshooter to keep the shm buffer
data format as BGRA.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
During a bring-up of a new backend, it would be nice to get a real error
message, when the EGL and GL contexts have not been properly set up.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This is a workaround for platforms, whose EGL headers miss the
definitions for EGL_WL_bind_wayland_display.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Compositor core does not do anything with udev, so the header is not
needed there. Move the #include into evdev.h, from where it gets used by
compositor-drm.c, too.
Also fix the fallout:
tty.c: In function 'tty_create':
tty.c:143:2: warning: implicit declaration of function 'fstat'
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
This reverts a snip from commit d012e9df. On that commit, it was lost the
ability of calling X applications from desktop panel; xserver module
was setting DISPLAY only later, after panel was already launched.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
wl_shell is more likely to be used for core protocol specific. Now it follows
pretty much the same style of what tablet-shell is using.
No functional changes.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
When the surface being moved, resized or rotated was destroyed, the
compositor would crash.
Fix this by using a destroy listener on the referenced surface. To
reduce code duplication, the surface reference and the destroy
listener is added to a new struct shell_grab.
Removing the input devices will trigger events and activity that will cause
a redraw. Do this before we put the compositor to sleep so we can cancel it
properly and avoid immediately waking the compositor again.
We dont want to receive hotplug events while being inactive.
When getting back active we enumerate all devices and would end up
with two sources for one device that may be hotplugged in the mean time.
weston-launch starts weston and provides mechanism
for weston to set/drop drm master, open a tty,
and read input devices without being root.
Execution is allowed for local-active sessions
or users in the group weston-launch.
Use shell_stack_fullscreen() to raise fullscreen surface in activate(),
and before activate() a regular surface, move all the fullscreen
surfaces from fullscreen_layer to toplevel_layer.
Also add a void *private into struct wesont_surface since we already
have a configure() vfunc. That helps to get the associated fullscreen
surface of black surface.
The remaining use case was making our context current before we had any
output surfaces. We can do that now using a dummy surface, so let's stop
relying on surfaceless.
Instead of using the hacks of gbm_bos, EGLImage, FBOs and surfaceless
we switch to using the new gbm surface API. This gives us an EGL
native window type for gbm and lets us use a real EGL surface.
A couple of fixes were made: Weston tablet-shell needed to use weston_layer,
so the compositor could rebuild the surface list correctly when repainting;
homescreen and locking are using the widget + window abstration of toytoolkit;
and widget_set_redraw_handler are being set for widgets redraw.
Also, it was given some basic meaning for lockscreen_button_handler, which
was completely disabled before. As a clean up, I updated the global listener
mechanism on tablet-shell client, using the regular way of registering a
handler instead wl_display_roundtrip -> wl_display_get_global.
Switcher still without code to proper work and the same for tablet-shell
clients, which are not launched.
krh: Edited to not scale down homescreen icons, use new load_cairo_surface()
for image loading.
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>