- 03 Oct, 2019 9 commits
-
-
Hans de Goede authored
latin1_string_from_results and utf8_string_from_results use g_strndup, so the returned string should be freed with g_free, rather then with free or XFree. This fixes all free-s of buffers returned by these 2 functions to properly use g_free. !786
-
Hans de Goede authored
Use g_new0 instead of calloc for motif_hints_from_results and adjust its callers to use g_free. Note that in the process_request_frame_extents function this replaces the wrong original mismatch of calloc + XFree with a matching g_malloc + g_free pair. !786
-
Hans de Goede authored
meta_prop_get_cardinal_list directly passes through the results->prop pointer which is g_malloc memory, so we should free the buffer it returns with g_free. !786
-
Hans de Goede authored
atom_list_from_results directly passes through the results->prop pointer which is g_malloc memory, so we should free the buffer it returns with g_free. !786
-
Hans de Goede authored
Use meta_XFree instead of XFree, letting meta_XFree do the NULL checks for us. !786
-
Daniel van Vugt authored
The final version of the function was changed to allow points that are touching the edge of a quadrilateral to be counted as "inside". Update the function documentation to refect this. Also clarify that the function is written in such a way that it is agnostic to clockwise or anticlockwise vertex ordering. !783
-
Ting-Wei Lan authored
!817
-
Olivier Fourdan authored
Make sure to submit all pending primitives before blitting, otherwise rendering from the shell may be incomplete leaving partial drawing of the shell widgets. !820
-
Olivier Fourdan authored
In `clutter_stage_view_blit_offscreen()`, the given clipping rectangle is in “view” coordinates whereas we intend to copy the whole actual framebuffer, meaning that we cannot use the clipping rectangle. Use the actual framebuffer size, starting at (0, 0) instead. That fixes the issue with partial repainting with shadow framebuffer when fractional scaling is enabled. !820
-
- 02 Oct, 2019 4 commits
-
-
Marco Trevisan authored
Clutter actors might emit property changes in dispose, while unparenting. However we assume that the ::destroy signal is the last one we emit for an actor, and that starting from this moment the object is not valid anymore, and so we don't expect any signal emission from it. To avoid this, freeze the object notifications on an actor during its disposition, just before the ::destroy signal emission. Update the actor-destroy test to verify this behavior. !769
-
Marco Trevisan authored
Clutter actors unset their parent on dispose, after emitting the ::destroy signal, however this could cause ::parent-set signal emission. Since we assume that after the destruction has been completed the actor isn't valid anymore, and that during the destroy phase we do all the signal / source disconnections, this might create unwanted behaviors, as in the signal callbacks we always assume that the actor isn't in disposed yet. To avoid this, don't emit ::parent-set signal if the actor is being destroyed. Update the actor-destroy test to verify this behavior. !769
-
Olivier Fourdan authored
Mutter issues a synchronous grab on the pointer for unfocused client windows to be able to catch the button events first and raise/focus client windows accordingly. When there is a synchronous grab in effect, all events are queued until the grabbing client releases the event queue as it processes the events. Mutter does release the events in its event handler function but does so only if it is able to find the window matching the event. If the window is a shell widget, that matching may fail and therefore Mutter will not release the events, hence causing a freeze in pointer events delivery. To avoid the issue, make sure we sync the pointer events in case we can't find a matching window. !821
-
Ask Hjorth Larsen authored
-
- 30 Sep, 2019 1 commit
-
-
Jonas Ådahl authored
It was not the lack of forcing the shadow fb that caused slowness, but rather due to the method the shadow fb content was copied onto the scanout fb. With 'clutter: Use cogl_blit_framebuffer() for shadow FB' we'll use a path that shouldn't be slow when copying onto the scanout fb. Also 437f6b3d accidentally enabled shadow fb when using hw accelerated contexts, due to the cap being set to 1 in majority of drivers. While the kernel documentation for the related field says "hint to userspace to prefer shadow-fb rendering", the name of the hint when exposed to userspace is DRM_CAP_DUMB_PREFER_SHADOW, thus should only be taken into consideration for dumb buffers, not rendering in general. This reverts commit 437f6b3d. !818
-
- 28 Sep, 2019 1 commit
-
-
Adam Jackson authored
!814
-
- 27 Sep, 2019 6 commits
-
-
Jonas Ådahl authored
The commit 'renderer/native: Use shadow fb on software GL if preferred' attempted to force using a shadow fb when using llvmpipe in order to speed up blending, but instead only did so when llvmpipe AND the drm device explicityl asked for it. Now instead always force it for llvmpipe and other software rendering backends, and otherwise just query the drm device (i.e. DRM_CAP_DUMB_PREFER_SHADOW). !807
-
Olivier Fourdan authored
If there is no transformation, use `cogl_blit_framebuffer()` as a shortcut in `clutter_stage_view_blit_offscreen()`, that dramatically improves performance when using a shadow framebuffer. !809
-
Robert Mader authored
Since the recent clutter-content work, legacy scaling (in contrast to the new stage-view-scaling) only applies to surfaces that belong to a window. This broke scaling of DnD surfaces. As a workaround, apply the same scaling on DnD-surface-actors until we use stage-view-scaling by default and can remove this again. Also: small corrections of geometry calculation !780
-
Robert Mader authored
This allows us to implement more sophisticated logic for the different cases. For DnD surfaces, use the geometry scale of the monitor where the pointer is, instead of incorrectly assuming '1' as it was before. !780
-
Jonas Ådahl authored
Otherwise we won't get core dumps if the launching binary has capabilities set. !811
-
Carlos Garnacho authored
The meta_display_update_focus_window() call has indirect dependencies on the X11 focus window, in order to determine the correct focus window on the Wayland side (i.e. may turn out NULL with certain X windows). In order to have the right x11_display->focus_xwindow there, we should perform first the focus update on the X11 display. Fixes focusing of Java applications, as those don't seem to go through _NET_ACTIVE_WINDOW. Closes: #819
-
- 26 Sep, 2019 2 commits
-
-
Matej Urbančič authored
-
Jonas Ådahl authored
When tearing down, gnome-shell may call various methods a bit late, specifically while MetaDisplay is closing, after MetaCompositor is freed. Handle calls to the fullscreen unredirect inhibitation counters happening after MetaCompositor tear down by ignoring them. We're closing anyway, so it's not a problem. Fixes: gnome-shell#1710 !808
-
- 25 Sep, 2019 1 commit
-
-
Nathan Follens authored
-
- 24 Sep, 2019 2 commits
-
-
Olivier Fourdan authored
With the addition of the locate-pointer special keybinding (defaults to the [Control] key), we have now two separate special modifier keys which can be triggered separately, one for the locate-pointer action and another one for overlay. When processing those special modifier keys, mutter must ensure that the key was pressed alone, being a modifier, the key could otherwise be part of another key combo. As result, if both special modifiers keys are pressed simultaneously, mutter will try to trigger the function for the second key being pressed, and since those special modifier keys have no default handler function set, that will crash mutter. Check if the handler has a function associated and treat the keybinding as not found if no handler function is set, as with the special modifier keys. #823
-
Olivier Fourdan authored
The `process_event()` would check for a existing keybinding handler and abort if there is none, however the test is done after the handler had been accessed, hence defeating the purpose of the check. Move the check to verify there is an existing keybinding handler before actually using it. #823
-
- 20 Sep, 2019 14 commits
-
-
Robert Mader authored
shaped_texture requires the clip to be in surface coordinates. Scale it accordingly. !758
-
Robert Mader authored
There were multiple bugs present after the ClutterContent transition. Refactor `get_image` to: - always assume surface coordinates for the clip - return a cairo_surface in buffer size - make the offscreen path take size arguments, so we can easily change the assumption in get_image - fix some clipping bugs on the way !758
-
Marco Trevisan authored
As per commit 75cffd0e MetaShapedTexture is a GObject implementing the Clutter Content interface. Reflect this on the type declaration. !796
-
Marco Trevisan authored
Redefine the docstring for functions using shaped texture, setting the clip as nullable. !79
-
Marco Trevisan authored
As per the code definition the clip can be a null rectangle, and we can also return a null surface, so mark them as nullable in the introspection. !796
-
Marco Trevisan authored
Delayed clutter timelines might be removed while they are still in the process of being executed, but if they are not playing yet their delay timeout won't be stopped, causing them to be executed anyway, leading to a potential crash. In fact if something else keeps a reference on the timelines (i.e. gjs), the dispose vfunc delay cancellation won't take effect, causing the timelines to be started and added to the master clock. To avoid this, expose clutter_timeline_cancel_delay() function and call it if a timeline is not playing but has a delay set. Fixes #815 !805
-
Marco Trevisan authored
If a timeline is delayed and we request to stop or pause it, we are emitting the "::paused" signal on it, however this has never been started, and so nothing has really be paused. So, just try to cancel the delay on pause and return if not playing. No code in mutter or gnome-shell is affected by this, so it is safe to change. !805
-
Marco Trevisan authored
Avoid repeating the same code for canceling the delay timeout, using a function for later uses. !805
-
Adam Jackson authored
Some drivers expose EGL_EXT_image_dma_buf_import_modifiers so you can query supported formats, but don't support any modifiers. Handle this by treating it like DRM_FORMAT_MOD_INVALID. !782
-
Marco Trevisan authored
Clutter stage used to compute the initial projection using a fixed z translation which wasn't matching the one we computed in calculate_z_translation(). This caused to have a wrong initial projection on startup which was then correctly recomputed only at the first paint. However, since this calculation doesn't depend on view, but only on viewport size, perspective's fovy and z_near we can safely do this at startup and only when any of those parameters change. Then we can move the computation out _clutter_stage_maybe_setup_viewport() since the cogl framebuffer viewport sizes aren't affecting this. Fixes gnome-shell#1639 !803
-
Iain Lane authored
GCC's manpage says that this flag does the following: Do not store floating-point variables in registers, and inhibit other options that might change whether a floating-point value is taken from a register or memory. This option prevents undesirable excess precision on machines such as the 68000 where the floating registers (of the 68881) keep more precision than a "double" is supposed to have. Similarly for the x86 architecture. For most programs, the excess precision does only good, but a few programs rely on the precise definition of IEEE floating point. We rely on this behaviour in our fork of clutter. When performing floating point computations on x86, we are getting the wrong results because of this architecture's use of the CPU's extended (x87, non-IEEE confirming) precision by default. If we enable `-ffloat-store` here, then we'll get the same results everywhere by storing into variables instead of registers. This does not remove the need to be correct when handling floats, but it does mean we don't need to be more correct than the IEEE spec requires. !785
-
Daniel van Vugt authored
On 64-bit systems uint64_t is %lu but on 32-bit systems it is %llu. !778
-
Daniel van Vugt authored
On 64-bit systems uint64_t is %lu but on 32-bit systems it is %llu. !778
-
Daniel van Vugt authored
On 64-bit systems int64_t is %lx but on 32-bit systems it is %llx. !778
-