<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/mutter.git/clutter, branch document-button-values</title>
<subtitle>gitlab.gnome.org: GNOME/mutter.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/'/>
<entry>
<title>clutter: Always make the seat handle the events first</title>
<updated>2021-03-13T21:36:25+00:00</updated>
<author>
<name>Marco Trevisan (Treviño)</name>
<email>mail@3v1n0.net</email>
</author>
<published>2021-03-12T19:12:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=eed368ee91c9444d52b3f9a7f8f54abb7703a505'/>
<id>eed368ee91c9444d52b3f9a7f8f54abb7703a505</id>
<content type='text'>
Some events such as the proximity one requires a device to be set before
we process them, so ensure we process the event details after we've
added the device to the seat.

This may lead to handle a device-removed signal before the clutter event
but it's anyways not different from what we did before commit 012c0a18

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1779&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some events such as the proximity one requires a device to be set before
we process them, so ensure we process the event details after we've
added the device to the seat.

This may lead to handle a device-removed signal before the clutter event
but it's anyways not different from what we did before commit 012c0a18

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1779&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cally/stage: Don't add weak pointer to stage</title>
<updated>2021-03-13T18:56:21+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-03-12T14:36:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=1ff1100d766ad49a34ac12603a416e62cdf462fc'/>
<id>1ff1100d766ad49a34ac12603a416e62cdf462fc</id>
<content type='text'>
The CallyStage objects lifetime is tied to the stage, so if we add a
weak pointer to it, we won't be able to remove it, as we would try to do
so not until the stage itself is being disposed, at which point removing
it fails. However, not removing it will make the stage try to clean up
the weak refs, and since it does this more or less directly after
freeing the cally stage, it ends up writing NULL to freed memory,
causing memory corruption.

Fix this by avoiding adding the weak pointer when that pointer is to the
stage.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The CallyStage objects lifetime is tied to the stage, so if we add a
weak pointer to it, we won't be able to remove it, as we would try to do
so not until the stage itself is being disposed, at which point removing
it fails. However, not removing it will make the stage try to clean up
the weak refs, and since it does this more or less directly after
freeing the cally stage, it ends up writing NULL to freed memory,
causing memory corruption.

Fix this by avoiding adding the weak pointer when that pointer is to the
stage.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>backend: Destroy clutter backend explicitly</title>
<updated>2021-03-13T18:56:21+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-03-12T07:38:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=c1810d6947aa8d518d8ce94eb7e43f1e777e99fa'/>
<id>c1810d6947aa8d518d8ce94eb7e43f1e777e99fa</id>
<content type='text'>
Instead of relying on reference counting, destroy it with a destroy
function that calls run_dispose() on before removing a reference.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of relying on reference counting, destroy it with a destroy
function that calls run_dispose() on before removing a reference.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>backend: Destroy seat explicitly</title>
<updated>2021-03-13T18:56:21+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-03-12T07:34:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=ab600cafd270897340147e1ab22596fd4133da08'/>
<id>ab600cafd270897340147e1ab22596fd4133da08</id>
<content type='text'>
Don't let any dangling pointer keeping it alive.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't let any dangling pointer keeping it alive.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>backend: Take over seat ownership from the clutter backend</title>
<updated>2021-03-13T18:56:21+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-03-12T07:31:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=6ecd911dd0fe370c93486f41798f8f36a70e2187'/>
<id>6ecd911dd0fe370c93486f41798f8f36a70e2187</id>
<content type='text'>
Having the clutter backend owning and managing creates complication for
implementing graceful shutdown, so move it to the real backend.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Having the clutter backend owning and managing creates complication for
implementing graceful shutdown, so move it to the real backend.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/frame-clock: Evenly space updates when presentation times are zero</title>
<updated>2021-03-12T16:01:38+00:00</updated>
<author>
<name>Daniel van Vugt</name>
<email>daniel.van.vugt@canonical.com</email>
</author>
<published>2021-02-11T07:48:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=56fc09151d5da6ec2439c8844ec15499856f373e'/>
<id>56fc09151d5da6ec2439c8844ec15499856f373e</id>
<content type='text'>
This is for the Nvidia-X11 driver where `last_presentation_time_us` is
always zero. Other drivers should be unaffected.

The existing `calculate_next_update_time_us` algorithm only provides a
guarantee of not scheduling faster than the refresh rate in the presence
of a valid `last_presentation_time_us`. When `last_presentation_time_us`
is zero there is no solid foundation to guarantee we're not occasionally
scheduling too early. So introduce one now.

By introducing a hard guarantee that updates are never scheduled faster
than the refresh rate, we avoid keeping Nvidia's triple (or quad?) buffer
queue full. So this avoids the high latency and random stalls experienced
on Nvidia.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/818,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1273,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1287,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1291,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1583

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1726&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is for the Nvidia-X11 driver where `last_presentation_time_us` is
always zero. Other drivers should be unaffected.

The existing `calculate_next_update_time_us` algorithm only provides a
guarantee of not scheduling faster than the refresh rate in the presence
of a valid `last_presentation_time_us`. When `last_presentation_time_us`
is zero there is no solid foundation to guarantee we're not occasionally
scheduling too early. So introduce one now.

By introducing a hard guarantee that updates are never scheduled faster
than the refresh rate, we avoid keeping Nvidia's triple (or quad?) buffer
queue full. So this avoids the high latency and random stalls experienced
on Nvidia.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/818,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1273,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1287,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1291,
        https://gitlab.gnome.org/GNOME/mutter/-/issues/1583

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1726&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter: Expose 'capture_view_into()` as API</title>
<updated>2021-03-12T15:09:45+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-01-27T22:14:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=9b1b4eb843aaababb797c57d91e8d2dd3bf7c72b'/>
<id>9b1b4eb843aaababb797c57d91e8d2dd3bf7c72b</id>
<content type='text'>
It'll be used to explicitly capture the content of a single view.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It'll be used to explicitly capture the content of a single view.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tests: Add reference test framework</title>
<updated>2021-03-12T15:09:45+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-01-26T16:07:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=d7ce6a47f89884d9aa381a6ab7cd85002135f5cf'/>
<id>d7ce6a47f89884d9aa381a6ab7cd85002135f5cf</id>
<content type='text'>
This adds a test framework that makes it possible to compare the result
of painting a view against a reference image. Test reference as PNG
images are stored in src/tests/ref-tests/.

Reference images needs to be created for testing to be able to succeed.
Adding a test reference image is done using the
`MUTTER_REF_TEST_UPDATE` environment variable. See meta-ref-test.c for
details.

The image comparison code is largely based on the reference image test
framework in weston; see meta-ref-test.c for details.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds a test framework that makes it possible to compare the result
of painting a view against a reference image. Test reference as PNG
images are stored in src/tests/ref-tests/.

Reference images needs to be created for testing to be able to succeed.
Adding a test reference image is done using the
`MUTTER_REF_TEST_UPDATE` environment variable. See meta-ref-test.c for
details.

The image comparison code is largely based on the reference image test
framework in weston; see meta-ref-test.c for details.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter: Ensure we always call handle_event_post for processed events</title>
<updated>2021-03-10T13:56:54+00:00</updated>
<author>
<name>Marco Trevisan (Treviño)</name>
<email>mail@3v1n0.net</email>
</author>
<published>2021-03-10T00:13:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=012c0a18efbb3a694de2e72af4948bc1ea03cbeb'/>
<id>012c0a18efbb3a694de2e72af4948bc1ea03cbeb</id>
<content type='text'>
Since commit 2ceac4a device-related X11 events aren't processed anymore,
causing the input settings not to handle the devices.
This is due to the fact that we may never call clutter_seat_handle_event_post()
for such events.

While this is always happening for the native backend, it doesn't happen in
X11 because the events are removed from the queue as part of
meta_x11_handle_event(), and thus no event was queued to the stage by the
backend events source.

This also makes sure that the event post handler is called after the
event is actually processed, and not before an event is queued.

Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1564
Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1769&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since commit 2ceac4a device-related X11 events aren't processed anymore,
causing the input settings not to handle the devices.
This is due to the fact that we may never call clutter_seat_handle_event_post()
for such events.

While this is always happening for the native backend, it doesn't happen in
X11 because the events are removed from the queue as part of
meta_x11_handle_event(), and thus no event was queued to the stage by the
backend events source.

This also makes sure that the event post handler is called after the
event is actually processed, and not before an event is queued.

Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1564
Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1769&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/stage-view: Disable double buffered shadow buffering</title>
<updated>2021-03-08T11:11:01+00:00</updated>
<author>
<name>Jonas Ådahl</name>
<email>jadahl@gmail.com</email>
</author>
<published>2021-02-10T08:39:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=393a85971c477419e0c16cf66c349d83651aa223'/>
<id>393a85971c477419e0c16cf66c349d83651aa223</id>
<content type='text'>
To make the double buffered shadow buffer damaged tiles detection
feasable, a new EGL extension is needed for creating FBO's backed by
a custom CPU memory buffer, instead of DMA buffers, as DMA buffers can
be very slow to read, much slower than just painting the shadow buffer
directly.

Leave the code there, since such an EGL extension is intended to be
added, but hide it behind an env var so that it isn't enabled by
accident.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1724&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To make the double buffered shadow buffer damaged tiles detection
feasable, a new EGL extension is needed for creating FBO's backed by
a custom CPU memory buffer, instead of DMA buffers, as DMA buffers can
be very slow to read, much slower than just painting the shadow buffer
directly.

Leave the code there, since such an EGL extension is intended to be
added, but hide it behind an env var so that it isn't enabled by
accident.

Part-of: &lt;https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1724&gt;
</pre>
</div>
</content>
</entry>
</feed>
