Commit Graph

22631 Commits

Author SHA1 Message Date
Jonas Ådahl
cf6b7bcb79 backends/native: Move pause/resume handling to backend
Move the handling of pause/resume events from the launcher to the
backend.

https://bugzilla.gnome.org/show_bug.cgi?id=779837
2017-03-10 17:19:33 +08:00
Olivier Fourdan
4b86af839f xwayland: Raise the dnd window each time
If the dnd window ends up lower in the overall stack than the window
it's supposed to fence, the drop might end up in some other window
underneath the expected target window.

Maps and raises the dnd window each time it's shown so that it's always
placed above.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=779800
2017-03-09 14:09:36 +01:00
Marek Černocký
f434f88c0c Updated Czech translation 2017-03-09 07:55:25 +01:00
Jonas Ådahl
cdedd017d6 input-settings: Use logical monitors instead of outputs
A MetaOutput is a connector, not exactly a monitor or a region on the
stage; for example tiled monitors are split up into multiple outputs,
and for what is used in input settings, that makes no sense. Change
this to use logical monitors instead of outputs.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
a48c9d6cd9 input-settings: Don't use screen limits when keeping aspect ratio
When no output was specified, the screen limit was used to calculate the
aspect ratio. The screen limit, however, is either just an arbitrary
number if no screen limit is applicable, or a hardware graphics buffer
limit, which has nothing to do with anything actually displayed. Change
it to use the screen size instead, to get something that makes more
sense when no output is found.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
1039386e10 backend/x11/nested: Enable emulating offscreen transform framebuffer
Enable the usage of an offscreen transform texture, as used in the
native backend when the GPU doesn't support the transform configured.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
944339f6a5 monitor-manager: Expose whether the backend handles a transform
Expose via a new API whether the transform on a logical monitor is
handled by the backend. This was previously only exposed only in the
native backend. This will be used to emulate not supporting transforms
in the backend in the nested backend.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
4cfcd4bce0 monitor-tiled: Derive the dimension from what was configured
Previously, the size of the logical monitor was derived directly from
the tiling information. This works fine until we add transformations,
or set modes with a dimension different from the resulting resolution
when tiled. Fix this by traversing the assigned CRTC rects, as these
are already transformed by the configuration system.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
4f386e5131 monitor-manager-dummy: Add way to emulate tiled monitors
By setting the environment variable MUTTER_DEBUG_TILED_DUMMY_MONITORS
to "1", the dummy MetaMonitorManager backend used when running mutter
nested will create tiled monitors instead of single-output/CRTC
monitors. This makes it possible to test tiled monitor configuration.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
3ace913aed monitor-manager-dummy: Add non-preferred mode
Add an extra mode besides the preferred one. This makes it possible to
test monitor configuration paths when running nested.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
8f2daed9e0 monitor-manager-dummy: Refactor monitor generation
Refactor monitor generation by splitting the generation of modes, CRTCs
and outputs into a separate function. A side effect is that each output
will have its own set of possible modes.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
c5dc0f4a2e clutter/stage-view: Add getter for getting the offscreen blit transform
This will be used to invert the transform in the nested mode, making it
possible to test offscreen texture based transform using the nested
backend.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
615587cd06 monitor-manager: Split logical monitor creation
Split up logical monitor cration into derived (when derived from
current underlying configuration) and non-derived (when creating from a
logical monitor configuration). This avoids that type of logic in the
logical monitor creation function.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
df068a3649 monitor-tiled: Generate non-tiled monitor modes
Add support for non-tiled monitor modes on tiled monitors. This is done
by adding all the other supported modes, except the modes with the
same resolution as the tile dimensions.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
7967ceee98 logical-monitor: Don't set the CRTC logical monitor if not assigned
When adding a monitor and all its outputs, don't try to set the logical
monitor of the outputs CRTC if none was assigned. This might happen if
a tiled monitor only uses a subset of the connectors it are connected
via.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
979bc4390a monitor-manager-dummy: Don't set up state at the wrong time
Don't set the CRTC rect and screen size at in read_current(), as those
depends on how the configuration is done. Instead, don't set the CRTC
rect at all, and update the screen dimensions when being configured.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Jonas Ådahl
e20e60783a tests: Make test backend inherit MetaBackendX11Nested
The test backend must inherit the nested backend, as MetaBackendX11 is
not complete.

https://bugzilla.gnome.org/show_bug.cgi?id=779745
2017-03-09 10:17:30 +08:00
Carlos Garnacho
38c5a1610e xwayland: Use timestamp from XdndPosition/Drop on XConvertSelection
QT apps reject DnD if the timestamp received in the SelectionRequest
event isn't the same it gave in XdndPosition/Drop client messages.
Bookkeeping and using it in XConvertSelection makes it happy again.

https://bugzilla.gnome.org/show_bug.cgi?id=779757
2017-03-08 19:18:04 +01:00
Carlos Garnacho
572610d01e xwayland: Check MetaDndBridge focus_window when updating X11 proxy window
We are keeping accounting of the focus window as seen by the DnD bridge
right here, so use it instead of the MetaWaylandDragGrab focus as it may
lag behind the real focus (i.e. till the drag source notices the window
and sends XdndEnter to it).

This leads to the window trying to be repositioned more often than
necessary when the drag source takes long to send the XdndEnter client
message, and maybe not repositioned at all if the pointer leaves the
surface while no XdndEnter message was received.

https://bugzilla.gnome.org/show_bug.cgi?id=763246
2017-03-08 16:58:59 +01:00
Carlos Garnacho
21b2eff334 xwayland: Release xdnd grabs ASAP
We currently wait for the selection being cleared by the drag source,
which might not happen on not quite educated clients. This may leave
a stuck XDND grab in the compositor side.

We can actually do a bit better, and clear the grab if:
1) The drag source sent XdndDrop to the wayland drag destination.
2) There's no accepting drag destination and all pointer buttons are
   released.
3) As usual, whenever the drag source clears the selection data

https://bugzilla.gnome.org/show_bug.cgi?id=763246
2017-03-08 16:58:19 +01:00
Carlos Garnacho
35388fb33c cogl: Use pixel_format_to_gl_with_target on bitmap uploading paths
We already do have a texture with an internal format in these paths,
so we should check the required format according to it.

This fixes CoglAtlasTexture (and CoglPangoRenderer indirectly), as
it forces a RGBA format on its texture, but pixel_format_to_gl()
anyway assumed swizzling is performed on the texture, while it is
not the case.

https://bugzilla.gnome.org/show_bug.cgi?id=779234
2017-03-07 13:40:06 +01:00
Carlos Garnacho
aa5738c777 cogl: Add pixel_format_to_gl_with_target driver vfunc
This is used by the GL driver in order to determine whether swizzling
actually applies given the bitmap and target texture internal format.
If both agree that they store BGRA, then swizzling may apply.

https://bugzilla.gnome.org/show_bug.cgi?id=779234
2017-03-07 13:40:06 +01:00
GNOME Translation Robot
f7ffb1790f Update Scottish Gaelic translation
(cherry picked from commit a27f8debca)
2017-03-07 12:00:47 +00:00
Hyungwon Hwang
65e9c89ed9 dnd: Implement DnD handling code in Wayland
No XDnD events which notify DnD status change comes in Wayland. To emulate XDnD
behavior, MetaDnd checks whether there is a grab or not when the modal window
starts showing. When there is a grab, it processes the raw events from
compositor, and emits DnD signals for plugin.

https://bugzilla.gnome.org/show_bug.cgi?id=765003
2017-03-07 08:28:36 +08:00
Hyungwon Hwang
5fafaf92df dnd: Implement MetaDnd
Implement MetaDnd for emitting DnD signals to plugins such as gnome-shell. The
xdnd handling code comes from gnome-shell, and it is hidden behind MetaDnd now.

https://bugzilla.gnome.org/show_bug.cgi?id=765003
2017-03-07 08:28:36 +08:00
Jonas Ådahl
4e4b24e7a8 backends/x11: Fallback to the first logical monitor when out of focus
When running nested, the pointer can be outside of the stage, meaning
outside of any logical monitor. Handle this when getting the current
logical monitor by falling back to the first logical monitor when the
pointer coordinate is outside of any logical monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=779001
2017-03-06 22:39:03 +08:00
Rui Matos
542ed1d024 clutter-clone: Unset source when source actor is destroyed
Otherwise we might be holding on to a source actor that's no longer
fully functioning and cause crashes if for example we try to paint it.

https://bugzilla.gnome.org/show_bug.cgi?id=779483
2017-03-06 14:00:48 +01:00
Aurimas Černius
eda0f45ab5 Updated Lithuanian translation 2017-03-04 18:05:50 +02:00
Miguel A. Vico
4fdc551209 MetaRendererNative: Properly handle EGLOutput acquire errors
Whenever an EGLOutput consumer is temporary unable to handle
eglStreamConsumerAcquire() operations (e.g. during a VT-switch),
an EGL_RESOURCE_BUSY_EXT error is generated.

This change adds the appropriate error handling to flip_egl_stream() in
order to recover from such errors.

https://bugzilla.gnome.org/show_bug.cgi?id=779112
2017-03-04 18:34:17 +08:00
Miguel A. Vico
58043cbc8b egl: Add EGL_RESOURCE_BUSY_EXT error
This change adds both the error code and description for
EGL_RESOURCE_BUSY_EXT, recently added to the EGL_EXT_stream_acquire_mode
extension:

  https://github.com/aritger/eglstreams-kms-example/blob/master/proposed-extensions/EGL_EXT_stream_acquire_mode.txt

https://bugzilla.gnome.org/show_bug.cgi?id=779112
2017-03-04 18:34:17 +08:00
Miguel A. Vico
09fa27cd09 egl: Add stream-related error descriptions
This change adds descriptions for the following errors to
get_egl_error_str():

  - EGL_BAD_STREAM_KHR
  - EGL_BAD_STATE_KHR
  - EGL_BAD_DEVICE_EXT
  - EGL_BAD_OUTPUT_LAYER_EXT

https://bugzilla.gnome.org/show_bug.cgi?id=779112
2017-03-04 18:34:17 +08:00
Jonas Ådahl
d8ee96c6cb egl: Pass EGL errors via custom error domain
Introduce META_EGL_ERROR and have the error code be EGL error codes.

https://bugzilla.gnome.org/show_bug.cgi?id=779112
2017-03-04 18:34:17 +08:00
Changwoo Ryu
3821ed162b Update Korean translation 2017-03-04 03:44:05 +00:00
Rui Matos
1f20e82a96 ui/frames: Simplify client area control computation
Ungrabbed pointer motion events over a client window area don't even
reach mutter in X compositor mode, but as a wayland compositor we
process those events which ends up in a call stack like:

- meta_window_handle_ungrabbed_event
 - meta_ui_frame_handle_event
  - handle_motion_notify_event
   - get_control
    - meta_ui_frame_calc_geometry

Computing frame geometry is a relatively CPU expensive operation and
doing it on every motion event over a client window is pointless work
since we aren't going to change the cursor or prelight any frame
widget.

This commit special cases the determination of
META_FRAME_CONTROL_CLIENT_AREA using a much faster method. When
continuously moving the pointer over an X (client) window, it results
in a ~40% decrease in mutter cpu usage.

https://bugzilla.gnome.org/show_bug.cgi?id=779436
2017-03-02 19:40:27 +01:00
Ask Hjorth Larsen
1079850621 Updated Danish translation 2017-03-02 13:16:55 +01:00
Sveinn í Felli
aab5f7c42b Update Icelandic translation
(cherry picked from commit bc567cfca7)
2017-03-02 11:36:51 +00:00
Chao-Hsiung Liao
f8a6c27791 Update Chinese (Taiwan) translation 2017-03-02 00:26:56 +00:00
Carlos Garnacho
95e9fa10ef cogl: Read pixels in the correct 32bit format as per the given bitmap
Fixes the gnome-shell screenshot tool from getting colors with the
wrong byte order.

https://bugzilla.gnome.org/show_bug.cgi?id=779234
2017-03-01 22:05:19 +01:00
Florian Müllner
89871e04aa Bump version to 3.23.91
Update NEWS.
2017-03-01 15:48:06 +01:00
Carlos Garnacho
1705a26fc7 cogl: Prefer swizzling to convert BGRA buffers
If the GL implementation/hw supports the GL_*_texture_swizzle extension,
pretend that BGRA textures shall contain RGBA data, and let the flipping
happen when the texture will be used in the rendering pipeline.

This avoids rather expensive format conversions when forcing BGRA buffers
into RGBA textures, which happens rather often with WL_SHM_FORMAT_ARGB8888
buffers (like gtk+ uses) in little-endian machines.

In intel/mesa/wayland, the performance improvement is rather noticeable,
CPU% as seen by top decreases from 45-50% to 25-30% when running
gtk+/tests/scrolling-performance with a cairo renderer.

https://bugzilla.gnome.org/show_bug.cgi?id=779234
2017-02-28 18:48:21 +01:00
Chao-Hsiung Liao
95c924460a Update Chinese (Taiwan) translation 2017-02-28 06:20:01 +00:00
Balázs Meskó
97b1a8dfc8 Update Hungarian translation 2017-02-26 12:00:18 +00:00
Мирослав Николић
fbcc8fae77 Updated Serbian translation 2017-02-26 09:30:10 +01:00
Rafael Fontenelle
3d2cb7f1ef Update Brazilian Portuguese translation 2017-02-25 20:56:50 +00:00
Fabio Tomat
fc9a24824a Update Friulian translation 2017-02-24 15:32:34 +00:00
Owen W. Taylor
383ba566bd Call cogl_xlib_renderer_set_threaded_swap_wait_enabled()
Set up things so that if the INTEL_swap_event extension is not present,
but the driver is known to have good thread support, we use an extra
thread and call glXWaitVideoSync() in the thread. This allows idles
to work properly, even when Mutter is constantly redrawing new frames;
otherwise, without INTEL_swap_event, we'll just block in glXSwapBuffers().

https://bugzilla.gnome.org/show_bug.cgi?id=779039
2017-02-21 16:25:02 -05:00
Owen W. Taylor
d200868459 Add cogl_xlib_renderer_set_threaded_swap_wait_enabled()
Because the threaded-swap-wait functionality requires XInitThreads(),
and because it isn't clear that it is a win for all applications,
add a API function to conditionally enable it.

Fix the cogl-crate example not to just have a hard-coded dependency
on libX11.

https://bugzilla.gnome.org/show_bug.cgi?id=779039
2017-02-21 16:25:01 -05:00
Owen W. Taylor
690b232258 For NVIDIA proprietary drivers, implement sync events with a thread
It's a good guess that the buffer swap will occur at the next vblank,
so use glXWaitVideoSync in a separate thread to deliver a sync event
rather than just letting the client block when frame drawing, which
can signficantly change app logic as compared to the INTEL_swap_event
case.

https://bugzilla.gnome.org/show_bug.cgi?id=779039
2017-02-21 16:25:01 -05:00
Owen W. Taylor
e078838774 Fix the get_clock_time() without GLX_OML_sync_control
When we don't have GLX_OML_sync_control, we still can set the
frame presentation time, but we always use the system monotonic time,
so return that from get_clock_time().

https://bugzilla.gnome.org/show_bug.cgi?id=779039
2017-02-21 16:25:01 -05:00
Owen W. Taylor
1b03dd6704 Usability of SGI_video_sync is per-display not per-renderer
As previously commented in the code, SGI_video_sync is per-display, rather
than per-renderer. The is_direct flag for the renderer was tested before
it was initialized (per-display) and that resulted in SGI_video_sync
never being used.

https://bugzilla.gnome.org/show_bug.cgi?id=779039
2017-02-21 16:25:01 -05:00