Commit Graph

1345 Commits

Author SHA1 Message Date
Pekka Paalanen a6421c4ea8 compositor: do not release if re-attaching buffer
If a client called wl_surface.attach with the same wl_buffer as
previously, the compositor would mistakenly send a release on that
buffer. This will cause problems only when clients start to properly use
the wl_buffer.release event.

Do not send wl_buffer.release if the same buffer is attached again.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-12-06 15:57:12 -05:00
Jan Arne Petersen 82ec909b07 shell: Do not remove input panel layer when locked
Do not remove the input panel layer from the layer list when the
shell is locked in hide_input_panels().

https://bugs.freedesktop.org/show_bug.cgi?id=56543

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2012-12-06 15:55:14 -05:00
Rob Bradford f4f58be8df compositor-drm: Load calibration values from udev
This allows the values to be associated with an specific input device using
udev rules.
2012-12-06 15:53:09 -05:00
Rob Bradford ea23b28642 evdev: Apply calibration values to absolute events
Store a set of calibration values per device - these calibration values are
just applied to the absolute motion events.
2012-12-06 15:53:09 -05:00
Rob Bradford 4a822495fa Move matrix.[ch] to shared
This means it can be used for the calibration tool.
2012-12-06 15:53:03 -05:00
Rob Bradford 80137f3afe evdev: Include the device capabilities in the debugging 2012-12-06 15:36:35 -05:00
Ander Conselvan de Oliveira 03fb4ef41e gl-renderer: Force call to glUseProgram() when activating debug binding
When redrawing surfaces, use_shader() checks if the desired shader is
already in use to avoid a call to glUseProgram(). However, once the
debug binding is activated, that same check would prevent the usage of
the recompiled shaders until something cause a different shader to be
passed to use_shader().
2012-12-03 10:30:51 -05:00
Tiago Vignatti 2d129f11fe xwayland: Staticize weston_wm_set_selection and read_and_dump_property
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-30 18:00:09 -05:00
Tiago Vignatti 3df3f225e3 xwayland: Remove useless structure
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-30 18:00:09 -05:00
Tiago Vignatti 9c4ff831c6 xwm: Rename get_resources function
It's pure WM-related function, so use the same 'weston_wm_' prefix that others
in the same file are already using.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-30 18:00:09 -05:00
Tiago Vignatti f268446339 xwayland: Standardize 'wxs' for weston_xserver variables
It was already being used in most of launcher.c and window-manager.c, so let's
make a standard everywhere now.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2012-11-30 18:00:09 -05:00
Ander Conselvan de Oliveira e920941032 compositor-drm: Allow scanning out of opaque ARGB surfaces 2012-11-30 14:24:00 -05:00
Pekka Paalanen 4fbb65372e Fix build warnings from image_loader
Fix the following build warnings, and the build failures due to the
warning fixes:

  CC     libshared_cairo_la-image-loader.lo
image-loader.c:369:1: warning: no previous prototype for 'load_image'

  CC     x11_backend_la-compositor-x11.lo
compositor-x11.c: In function 'x11_output_set_icon':
compositor-x11.c:396:2: warning: implicit declaration of function 'load_image'
compositor-x11.c:396:8: warning: assignment makes pointer from integer without a cast

  CC     wayland_backend_la-compositor-wayland.lo
compositor-wayland.c: In function 'create_border':
compositor-wayland.c:97:2: warning: implicit declaration of function 'load_image'
compositor-wayland.c:97:8: warning: assignment makes pointer from integer without a cast

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-11-30 14:24:00 -05:00
Ander Conselvan de Oliveira 0396ba204d compositor: Fix rendering with shm transformed buffers
The implementation of buffer transformation didn't handle transformed
shm buffers properly. The partial texture upload was broken since the
damage is in surface coordinates that don't necessarily match the
buffer's coordinates. It also wouldn't handle the buffer stride
properly, resulting in incorrect rendering if it didn't match the
buffer's width.

The logic used for converting texture coordinates was generalized and
moved out of the renderer, since this conversion may be useful in other
places, such as the backends.
2012-11-30 14:15:23 -05:00
Kristian Høgsberg cd1d6c8f19 compositor-x11: Link to libshared-cairo for icon loading helper
The X11 backend needs the image loader helper to load the window
icon.
2012-11-29 17:00:49 -05:00
Kristian Høgsberg 6006ecb497 configure.ac: Don't link weston to cairo or image libraries
We were pulling in cairo and the image loading libraries through libshared.
Split out libshared into a core libshared and a libshared-cairo that
pulls in the extra libraries.
2012-11-29 13:32:11 -05:00
Scott Moreau 76d8fc8216 xwm: Fix xwm opaque region
Since surface.commit was introduced, opqaue regions are stored in a pending
variable that isn't used until surface.commit. Xwayland uses the surface opaque
region as a way to tell weston what region of the surface should be opaque.
However when this pending opaque region was introduced, xwm was not updated
and so we have the 'black = transparent' problem again. This patch fixes the
problem by having xwm use the pending opaque regions.
2012-11-27 17:23:42 -05:00
Kristian Høgsberg bd1e928f25 noop-renderer: Remove unused variable 2012-11-27 13:20:40 -05:00
Jan Arne Petersen 337df952f8 text: Add support for forwarding key events
Allow an input method to forward (unfiltered) key and modifier events
from the hardware keyboard to the client.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2012-11-27 13:10:10 -05:00
Jan Arne Petersen 466b9c1047 text: Add support for grabbing the keyboard
Add support for requesting hardware input into an input method.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2012-11-27 13:09:07 -05:00
Jan Arne Petersen d9be93b964 text: Rename and extend text_model key event
Rename the key event in text_model to keysym and add serial, time and
modifiers arguments. Add a modifiers_map event to transfer an array of
0-terminated modifier names, so that a mapping of modifiers to the
modifier bit mask is possible.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2012-11-27 13:02:26 -05:00
Jan Arne Petersen 674fd1d625 text: Start input method from configuration
Start the input method specified in the weston.ini configuration file.

Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
2012-11-27 12:57:39 -05:00
Ander Conselvan de Oliveira 2908a3df0d compositor-drm: Support scan out of transformed buffers
If a client renders its buffers with the same transform as the output,
we can scan out them when fullscreen.
2012-11-27 11:30:04 -05:00
Ander Conselvan de Oliveira 012b4c78c9 compositor: Implement buffer transformation
Implement the wl_surface.set_buffer_transform request. This includes
tracking the double-buffered buffer transformation parameter and making
the gl renderer able to handle transformed buffers.
2012-11-27 11:29:31 -05:00
Pekka Paalanen 326529f900 gl, rpi: consolidate print_egl_error_state()
Rename print_egl_error_state() to gl_renderer_print_egl_error_state()
and exports it.

Remove the copy of that function from the rpi backend, and call
the exported function instead.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-11-27 11:12:48 -05:00
Ander Conselvan de Oliveira 0a887728ea compositor: Move clearing of primary plane damage to the backends
Backends may move surfaces to different planes, in which case damage is
generated in the primary plane. This damage is usually passed to the
renderer, but in some cases the backend may decide to not render
anything (that's the case when drm compositor scans out a client
buffer). In that case the damage on the primary plane would be
discarded, leading to artifacts later.

This patch makes the backend's responsibility to clear the damage on
the primary plane, so that unrendered damage is kept for as long as
necessary.
2012-11-23 21:33:51 -05:00
Ander Conselvan de Oliveira 7e918da36f compositor-drm: Add debug binding for toggling sprites
While at it, consolidate all the bindings we already have into one
single function.
2012-11-23 21:31:18 -05:00
Ander Conselvan de Oliveira 180f42a382 compositor-drm: Add a debug binding for toggling usage of hw cursors 2012-11-21 11:44:17 -05:00
Ander Conselvan de Oliveira 434e8f3ae1 zoom: Don't update the zoom translation if zoom level is 0
On the first frame with zoom activated, the spring used for animation
will have a current value of zero. The translation calculated with that
value will be invalid (not a number). Using this value later leads to
having an invalid output matrix, so nothing is composited in the first
zoomed frame.

This problem is most evident when a sprite plane is being used. In that
case, enabling the zoom will cause the surface to be moved back to the
primary plane, but because of the bug described above, this surface
would not actually be rendered causing a quick flicker.
2012-11-21 11:40:39 -05:00
Ander Conselvan de Oliveira b8fcca915b compositor: Move buffer damage fields from weston_output to gl-renderer
Move fields current_buffer and buffer_damage out of weston_output into
gl_output_state, since they are actually specific to the renderer.

Also bring back the previous_damage field so that the screenshooter
can get the damage for the previous frame in a renderer independent
way.
2012-11-16 19:00:03 -05:00
Ville Syrjälä aa628d0a7c shell/zoom: Increment/decrement disable_planes only when zoom.active changes
disable_planes should only be incremented when zoom.active actually
toggles. Otherwise the counter will be incremented too many times,
and planes will no longer get used.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
2012-11-16 18:39:30 -05:00
Ville Syrjälä 5a84f31514 compositor-drm: Don't use overlay when surface alpha != 1.0f
Assume that overlays can't handle alpha blending even with a constant
alpha factor.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2012-11-16 18:39:06 -05:00
Kristian Høgsberg f0377dd3a7 wcap: Transform damage rectangles according to output tranform
https://bugs.freedesktop.org/show_bug.cgi?id=56697
2012-11-14 20:28:30 -05:00
John Kåre Alsaker 779b52ac3a Rename gles2-renderer to gl-renderer. 2012-11-13 17:06:19 -05:00
John Kåre Alsaker 30d2b1fd4b Move EGL and GL includes to a gles2-renderer header. 2012-11-13 17:03:47 -05:00
John Kåre Alsaker 320711db0a Move weston_compositor GL and EGL state into gles2-renderer. 2012-11-13 17:03:33 -05:00
John Kåre Alsaker 75cc571839 Move weston_surface GL and EGL state into gles2-renderer. 2012-11-13 17:03:08 -05:00
John Kåre Alsaker 4068414a32 Moved shader state into gles2-renderer. 2012-11-13 17:02:38 -05:00
John Kåre Alsaker d615980b6b gles2-renderer: Renaming some functions. 2012-11-13 17:02:14 -05:00
John Kåre Alsaker 878f44969d compositor: Move surface color state to gles2-renderer.
This moves the surface color state into gles2-renderer. To do this it
adds two new weston_renderer functions. create_surface to be able to
create per-surface renderer state, and surface_set_color to set the
color of a surface and changes it to a color surface.
2012-11-13 17:01:59 -05:00
John Kåre Alsaker f9e710b57c screenshooter: Use the renderer function for reading out pixels
This also changes the compositor's read_format to a pixman format.
2012-11-13 17:01:02 -05:00
John Kåre Alsaker a95b2d6d41 compositor: Add a renderer function to read out pixels 2012-11-13 17:00:06 -05:00
John Kåre Alsaker 4415450ef1 Move compositor-wayland border drawing into gles2-renderer. 2012-11-13 16:59:01 -05:00
John Kåre Alsaker 1b7ad160a3 Move EGLConfig, EGLContext and EGLDisplay fields into gles2-renderer.
This moves the EGLConfig, EGLContext and EGLDisplay fields into
gles2-renderer. It also moves EGLDisplay creation and EGLConfig
selection into gles2-renderer.
2012-11-13 16:56:28 -05:00
John Kåre Alsaker 94659274b4 Move weston_output EGL state into gles2-renderer.
This introduces callbacks for output creation and destruction for the
gles2-renderer. This enables the gles2-renderer to have per-output
state. EGL surface creation is now done by the output_create callback
and the EGL surface is stored in the new per-output gles2-renderer
state. On the first output_create call, the gles2-renderer will setup
it's GL context. This is because EGL requires a EGL surface to be able
to use the GL context.
2012-11-13 16:30:27 -05:00
Dima Ryazanov ddf9bb3109 Fix a typo. 2012-11-13 15:56:05 -05:00
Ander Conselvan de Oliveira 8d360b47ad compositor-drm: Use drm_fbs for the sprite code too
This makes drm_fb_get_from_bo() use drmModeAddFB2() if possible so that
drm_output_prepare_overlay_surface() can use this instead of keeping
track of the fbs and buffers itself.
2012-11-09 12:00:58 -05:00
Ander Conselvan de Oliveira af696af2bb compositor-drm: Don't schedule repaint on scanout buffer destroy handler
Let the compositor generic code decide what to do when the buffer goes
away. We still have a valid reference do the bo, so we can still show
the client contents until something else triggers a repaint.
2012-11-09 11:24:58 -05:00
Ander Conselvan de Oliveira 2f7a30b07e compositor-drm: Only request vblank events if needed
If the sprite is disabled and we're not enabling it on the next frame,
nothing is done in the vblank handler, so there's no need to ask for a
vblank event.
2012-11-09 11:13:44 -05:00
Ander Conselvan de Oliveira 3b2bd44d92 compositor-drm: Remove drm_disable_unused_sprites()
If a sprite is no longer used, it is disabled on the call to
drmModeSetPlane() when doing the output repaint, since its
pending_fb_id is 0.
2012-11-09 11:13:22 -05:00