Commit Graph

1165 Commits

Author SHA1 Message Date
Kristian Høgsberg d8b617deea xwm: Fix input region regression from commit changes
This must be the last regression from the surface commit changes.  We
need to set the pending.input region, otherwise the region will be
overwritten on commit.

https://bugs.freedesktop.org/show_bug.cgi?id=60610
2013-02-14 21:56:48 -05:00
Jan Arne Petersen 451a97136f shell: Fix bug when input panel is shown twice
Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2013-02-14 21:56:48 -05:00
Kristian Høgsberg 0c36903fb3 shell: Add back ability to rotate unresponsive surfaces
When a surface in deemed unresponsive and we trigger the busy cursor, it's
no longer possible to rotate the surface.  This is clearly unacceptable.
This patch adds handling of right clicks to the busy grab so that we can
continue to rotate a surface even if the client is sleeping.

https://bugs.freedesktop.org/show_bug.cgi?id=60609
2013-02-14 21:33:42 -05:00
Rob Bradford 9f3dd15183 shell: Bypass fullscreen scaling if surface width and height match output
If our surface has width and height set to the same dimensions as the output
then we can bypassing the scale factor calculation and addition of the
transformation.

The use case that led to this optimisation is the playback of video using
gstreamer-vaapi with the "scale" method. The video is the same dimensions as
the output (1080p.)
2013-02-14 13:40:52 -05:00
Martin Andersson 566b46467f weston-launcher: Add missing newline in error message 2013-02-14 13:38:40 -05:00
Ander Conselvan de Oliveira 4c65da5fc0 compositor: Init fade surface color properly
When fading in, if a repaint was triggered after a call to
weston_compositor_fade() but before the first call to fade_frame(),
the fade surface wouldn't be drawn because its alpha channel wasn't
initialized properly.
2013-02-13 13:52:25 -05:00
Kristian Høgsberg b810eb5750 xwm: Support _NET_WM_STATE_FULLSCREEN
We can now handle fullscreen X windows.  X clients request to go fullscreen
buy sending a _NET_WM_STATE client message to the root window.  When that
happens we call into the shell interface and asks the shell to make the
surface fullscreen.  The shell will then resize the window, which causes
the X wm to configure the X window appropriately.

Make sure we ignore configure requests from fullscreened clients and send out
the synthetic configure notify as required in that case.

Finally, inspect _NET_WM_STATE before mapping so we can handle initial
fullscreen correctly.
2013-02-12 21:55:51 -05:00
Scott Moreau 088c62e267 Use __func__ in log message instead of hard coded function name 2013-02-11 14:56:18 -05:00
Philip Withnall 4f49917ec5 fbdev: Add an fbdev compositor backend using pixman and evdev
Add a frame buffer backend using pixman to render to fbdev.
This has been tested against nouveaufb but nothing else. Much of the code
came straight from the rpi backend (and copyright has been attributed
accordingly).

The behaviour of this backend on less modern frame buffers has yet to be
tested.

The refresh rate is calculated from the frame buffer's metadata. Every frame
is finished in synchrony with the refresh rate.

Frame buffer devices are currently specified on the command line (or using
the default of /dev/fb0); udev could be used in future to enumerate them.

pixman is used for compositing, and a suitable pixman format is built from
the frame buffer's metadata. This doesn't support the full range of
frame buffer formats, but does support varying BPPs of RGBA and ARGB. That
should be enough for now.

The following are not currently supported:
 • FOURCC
 • Non-packed formats (interleaved, planes, etc.)
 • Non-true-colour formats (monochrome, greyscale, etc.)
 • Big-endian formats (with component MSBs on the right)
 • Non-RGBA and non-ARGB formats

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
2013-02-07 20:49:22 -05:00
Scott Moreau 1224514f5b Add --version option 2013-02-02 10:28:50 -05:00
Kristian Høgsberg d92c09c770 compositor-drm: Use matrix type to test for drm plane compatibility
The drm planes (sprites) only support translation and scaling.  Now that
we have matrix.type, we can just look there to see if the transform is
compatible with kms.
2013-01-29 16:56:15 -05:00
Kristian Høgsberg 272d243e00 weston-launch: Clear environment and set it up from scratch
With recent systemd[1] XDG_VTNR will leak through to pam, which ends up
setting a vtnr pam argument with the wrong value.  The fix is to clear
XDG_VTNR first, but what we should have been doing all along is resetting
the environment.

Thanks to Ray Strode for helping debug this.

[1] http://cgit.freedesktop.org/systemd/systemd/commit/?id=a8573ccc35a4efe8900be5d48c6c803670540c2b
2013-01-29 14:19:14 -05:00
Quentin Glidic c0d79ce2ba shell: Whitespaces cleanup
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
2013-01-29 09:26:43 -05:00
Vasily Khoruzhick 031fc8751c pixman renderer: respect output position
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-29 09:26:29 -05:00
Vasily Khoruzhick f4a457fe0f pixman-renderer: handle surface transform matrix properly
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-28 16:10:13 -05:00
Vasily Khoruzhick 1bbf372e31 matrix: track transform type
Introduce several matrix transform types and track type for matrix.
Could be usefull for activating some fastpath that depends on some
transform type.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-28 16:10:03 -05:00
Kristian Høgsberg 3c2360ff9d Add new shared/image-loader.h to separate include dependencies
Before, cairo-util.h would combine pixman and cairo includes.  X11 and
Wayland compositors uses this to load an image as a pixman_image_t but are
forced to include cairo headers.  Clients use load_cairo_surface to
load images as cairo_surface_t's, but are forced to include pixman.h.

We move the load_image pixman prototype to its own header, so compositors
can get at the pixman prototype without including cairo.h and clients
can include the cairo based function without including pixman.h.
2013-01-28 16:02:04 -05:00
Ander Conselvan de Oliveira 23e72b867a pixman-renderer: Don't unreference NULL hw_buffer image
If the buffer for an output was never set, or was reset to NULL at some
point, destroying the renderer output private would cause a crash.
2013-01-27 14:33:08 -05:00
Ander Conselvan de Oliveira 5fb44141bf compositor-drm: Add support for using the pixman renderer
If --use-pixman is passed as command line option to weston, the drm
backend will use the pixman renderer instead of the gl one.
2013-01-27 14:32:17 -05:00
Ander Conselvan de Oliveira 1d41ad4054 compositor-drm: Support creating drm_fb backed by dumb buffers 2013-01-27 14:27:47 -05:00
Ander Conselvan de Oliveira 526d46118e compositor-drm: Put logic of destroy/releasing bo's in its own function
We have this duplicated in a few places.
2013-01-27 14:25:47 -05:00
Ander Conselvan de Oliveira 229291789a compositor-drm: Split kms initialization out of init_egl() 2013-01-27 14:24:53 -05:00
Ander Conselvan de Oliveira 936effddeb pixman-renderer: Move shadow buffer into renderer
The X11 backend uses a shadow buffer to be able to support transformed
outputs. However, this belongs in the renderer, since otherwise this
code would have to be copied into every backend that uses the pixman
renderer and supports transformed outputs.
2013-01-27 14:24:34 -05:00
Ander Conselvan de Oliveira 8792ef12b6 pixman-renderer: Add repaint debugging feature
Add 'R' as a debug shortcut that highlights repainted regions.
2013-01-27 14:23:57 -05:00
Scott Moreau cc9acfc75e weston-launch: Use "weston-launch" for --help instead of "weston".
The output of weston-launch --help was "Usage: weston [args...] ...".
This changes it to read "Usage: weston-launch [args...] ...".
2013-01-24 16:41:18 -05:00
Pekka Paalanen a87ccdc993 compositor: remove android backend
The Android backend has been fairly unused, since we do not have
projects actively using it. It gets basic build testing as part of the
normal build, but runtime testing it takes a considerable effort, and so
I have not done that in a long time. The code is slowly rotting, and
with new emerging backends it starts to be a burden, since it cannot use
udev, but needs evdev.

Therefore to ease Weston going forward, remove the Android backend. If
someone misses it, it can still be found in the stable 1.0 branch, and
of course resurrected from git history if someone wants to put in the
effort and maintain it.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2013-01-24 16:30:04 -05:00
Pekka Paalanen 3a1d07d5e7 shell: remove remnants of screensaver surface list
The list became stale probably when the lock_layer was introduced. Now
one less (ab)user of weston_surface::link.

Also add a comment on screensaver_configure(), that it is (and has been)
broken for pre-started screensavers.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2013-01-24 16:18:32 -05:00
Vasily Khoruzhick 26def5ca8e gl-renderer: make EGL typedefs similar to EGL/egl.h when building without EGL support
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-15 16:00:16 -05:00
Jonas Ådahl a178f70965 shell: Don't lower fullscreen layer on activate
To be able to have a fullscreen surface on one output, and interact with
surfaces on another output, don't lower the fullscreen layer on
activate.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2013-01-15 15:57:45 -05:00
Jonas Ådahl 33619a4955 shell: Set input region of the black fullscreen surface
The input region of the black surface placed under the fullscreen shell
surface did not have a specified input region. Because the initial input
region of a surface is infinity, no other surface on any other output
could get any focus.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2013-01-15 15:35:34 -05:00
Rob Bradford aa521bd1bc xwayland/window-manager: Avoid doing work for unknown window
In particular if the hash table lookup fails and returns NULL then that value
would be passed into weston_wm_window_schedule_repaint which does not accept a
NULL value.
2013-01-10 16:08:08 -05:00
Rob Bradford 23d330ec9d backlight: Avoid passing an invalid fd into close() 2013-01-10 16:07:42 -05:00
Rob Bradford e6675c28b5 screenshooter: Free allocated memory where missing from some return paths 2013-01-10 16:06:51 -05:00
Pekka Paalanen fe4eacf6ad gl: fix read-back format reporting in the log
weston_compositor::read_format is in Pixman values now, so comparing to
a GL value does not work. Compare to the right value.

This fix affects only the log output of the GL renderer.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2013-01-10 16:06:06 -05:00
Vasily Khoruzhick 1bfe2e6f4b Make EGL/GLESv2 dependencies optional
Introduce --disable-egl switch for configure to disable
EGL/GLESv2 support.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-08 15:32:00 -05:00
Vasily Khoruzhick 52cfd61cdb renderer: introduce destroy callback
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-08 15:31:08 -05:00
Vasily Khoruzhick 94c1dfb012 Add missing pixman-renderer.h to Makefile.am
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-08 15:30:39 -05:00
Kristian Høgsberg efaca34bc5 Document --use-pixman option 2013-01-07 15:52:44 -05:00
Vasily Khoruzhick d894351707 compositor-x11: rename use-shm to use-pixman
So it could be reused with other backends and not be easily confused
with wl_shm

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-07 15:33:25 -05:00
Vasily Khoruzhick b3add192ed x11 backend: add option to use pixman renderer
When --use-shm is passed to weston and x11 backend is active,
it will use SHM surfaces with pixman renderer instead of EGL

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-07 13:03:41 -05:00
Vasily Khoruzhick 71c2dd3c44 Implement pixman renderer
This renderer could be used when there's no graphic accelerator available,
for example in (future) KMS and fbdev backends.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-07 13:03:38 -05:00
Vasily Khoruzhick 2617185b74 screenshoter: add cases for x8r8g8b8 and x8b8g8r8 formats
These formats are used by pixman renderer for framebuffer surface, without
this patch screenshoter produces empty image.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-07 09:40:42 -05:00
Vasily Khoruzhick 094ca1d1ed screenshoter: don't use hardcoded bpp value
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2013-01-07 09:40:42 -05:00
Ander Conselvan de Oliveira 6c01c9c51f compositor-drm: Reduce code duplication on drm_output_switch_mode()
Call drm_output_init_egl() instead of duplicating the gbm surface and
gl renderer state initialization code.

Note that this makes error handling a bit worse. Before, if we failed
to allocate a gbm surface we could still recover. Failing the renderer
state creation would lead to inconsisten state. Now we end up in
inconsistent state on both cases.
2012-12-14 11:27:58 -05:00
Ander Conselvan de Oliveira 475cf154b1 compositor-drm: Move output gl state initialization to own function 2012-12-14 11:27:55 -05:00
Ander Conselvan de Oliveira f1c38a7426 compositor-drm: Don't do a mode set on drm_output_switch_mode()
At this point, we reallocated the gbm surface, but we don't have an
fb with the right size to use. If we're going to a larger mode, the fb
would be too small and the mode set would fail. Besides, the repaint
logic will already do a mode set if necessary, so rely on that instead.
2012-12-14 11:27:53 -05:00
Ander Conselvan de Oliveira 2e7a3ab7cd compositor-drm: Fix a return value check in drm_output_switch_mode()
gl_rederer_output_create() returns 0 on success, but drm compositor
would consider this a failure.
2012-12-14 11:27:50 -05:00
Ander Conselvan de Oliveira 2bbb2b8bac compositor: Don't let pointers get outside of an output on mode switch
When an output suffers a mode switch, it is possible that a pointer
was inside the old output area but falls outside of it with the new
size. In that case, move the cursor to the output's bottom-right
corner. Otherwise, there's a crash in clip_pointer_motion().
2012-12-14 11:27:44 -05:00
Ander Conselvan de Oliveira 5c38ef4d4a compositor: Update output state after mode switch
After a mode switch, the output region and transformation matrix need
to be updated. The call to weston_output_move() would do the former but
not the latter, but calling that when the output remains in the same
coordinate doesn't make much sense. Instead, update this state and the
transformation matrix in weston_output_mode_switch().
2012-12-14 11:27:40 -05:00
Kristian Høgsberg 3a8d3f2e98 Link matrix.c into weston again
We want to make sure that the matrix symbols are exported from weston and
that modules get them from there.  To do that, we pull matrix.[ch] out of
libshared and back into weston.  calibrator now also links to matrix.[ch]
and we add a IN_WESTON define to enable the WL_EXPORT macro when compiled
inside weston.
2012-12-07 15:00:36 -05:00