<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/mutter.git, branch gbsneto/graphene-ray</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/actor: Don't push identity transforms</title>
<updated>2020-10-23T22:21:10+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-18T17:29:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=08fcaa746eee68b3059ddabeb1fd50f7ecaa127e'/>
<id>08fcaa746eee68b3059ddabeb1fd50f7ecaa127e</id>
<content type='text'>
It is useless, and needlessly increases the matrix stack and
does more multiplications than necessary.

Don't push identity transforms to the pick stack.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is useless, and needlessly increases the matrix stack and
does more multiplications than necessary.

Don't push identity transforms to the pick stack.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/pick-context: Remove clutter_pick_context_get_framebuffer()</title>
<updated>2020-10-23T22:21:10+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-17T16:18:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=9f59f0895723cd43d2168bfa464effa2b144b823'/>
<id>9f59f0895723cd43d2168bfa464effa2b144b823</id>
<content type='text'>
It is not used anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is not used anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/actor: Remove cached inverse transform</title>
<updated>2020-10-23T22:21:10+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-17T15:43:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=17044906d9ca40aae5ed54ebd8db4eeb9923335f'/>
<id>17044906d9ca40aae5ed54ebd8db4eeb9923335f</id>
<content type='text'>
It is not used anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is not used anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>Use graphene_ray_t to pick actors</title>
<updated>2020-10-23T22:21:10+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-17T14:52:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=4be96491233f4e7f5efb842d8752375e0ee18e91'/>
<id>4be96491233f4e7f5efb842d8752375e0ee18e91</id>
<content type='text'>
This commit introduces a few important changes in order to
acommodate graphene_ray_t. Most of them are positive changes,
so don't panic :)

The first very visible change is that neither the actor box
nor the clip rectangles are projected before being pushed.
This required changing the parameters of the related functions
at both ClutterPickContext, and ClutterPickStack, to receive
boxes instead of vertices. These rectangles are projected on
demand now, so in the best case (first actor picked) only
one projection happens; and in the worst case, it projects
as much as it does now.

The second important change is that there are no more checks
for axis-alignment anymore. That's because picking now happens
in 3D space, using triangles.

Talking about triangles in 3D space, this is what is used now
for picking. We break down each actor rectangle in 2 triangles,
and check if the projected pick point is inside any one of them,
of if the ray intersects any one of them. The same check happens
for the clip rectangles.

Checking the projected pick point is both an optimization for the
2D case, and a workaround to graphene_ray_t problems with float
precision, which is specially visible on edges such as the top
bar.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit introduces a few important changes in order to
acommodate graphene_ray_t. Most of them are positive changes,
so don't panic :)

The first very visible change is that neither the actor box
nor the clip rectangles are projected before being pushed.
This required changing the parameters of the related functions
at both ClutterPickContext, and ClutterPickStack, to receive
boxes instead of vertices. These rectangles are projected on
demand now, so in the best case (first actor picked) only
one projection happens; and in the worst case, it projects
as much as it does now.

The second important change is that there are no more checks
for axis-alignment anymore. That's because picking now happens
in 3D space, using triangles.

Talking about triangles in 3D space, this is what is used now
for picking. We break down each actor rectangle in 2 triangles,
and check if the projected pick point is inside any one of them,
of if the ray intersects any one of them. The same check happens
for the clip rectangles.

Checking the projected pick point is both an optimization for the
2D case, and a workaround to graphene_ray_t problems with float
precision, which is specially visible on edges such as the top
bar.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/pick-stack: Store current matrix entry</title>
<updated>2020-10-23T22:12:55+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-17T12:37:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=97902ae5d1f60f30cf20e4f36aecb8aea77b4db6'/>
<id>97902ae5d1f60f30cf20e4f36aecb8aea77b4db6</id>
<content type='text'>
This is the beginning of the preparations to passing unprojected
rectangles to the clip stack. Store a ref to the current tip of
the matrix entry.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the beginning of the preparations to passing unprojected
rectangles to the clip stack. Store a ref to the current tip of
the matrix entry.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce ClutterPickStack</title>
<updated>2020-10-23T22:12:07+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-16T22:13:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=c4b0c919d856b6bf4e22acc0ea00f6152ab2f9eb'/>
<id>c4b0c919d856b6bf4e22acc0ea00f6152ab2f9eb</id>
<content type='text'>
ClutterPickStack is a new boxed type that stores the vertices
and clip rectangles. It is meant to be a byproduct of picking,
and takes over most of what ClutterStage currently does.

It introduces a 'seal' system, inspired by MetaKmsUpdate. After
the pick operation is done, and the rectangles are collected,
the pick stack is sealed, and is not allowed to be externally
modified anymore. Internally, it still can invalidate pick
records when an actor is destroyed.

For now, it handles both the clip rectangles, and the matrix
stack, separatedly. Future commits will rearrange this.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ClutterPickStack is a new boxed type that stores the vertices
and clip rectangles. It is meant to be a byproduct of picking,
and takes over most of what ClutterStage currently does.

It introduces a 'seal' system, inspired by MetaKmsUpdate. After
the pick operation is done, and the rectangles are collected,
the pick stack is sealed, and is not allowed to be externally
modified anymore. Internally, it still can invalidate pick
records when an actor is destroyed.

For now, it handles both the clip rectangles, and the matrix
stack, separatedly. Future commits will rearrange this.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/stage: Remove useless cached pick mode reset</title>
<updated>2020-10-23T22:05:00+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-16T20:40:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=89a64f12e019ea65a5e3ada527e3ceeb55e9413e'/>
<id>89a64f12e019ea65a5e3ada527e3ceeb55e9413e</id>
<content type='text'>
It happens a couple of lines above, in _clutter_stage_clear_pick_stack().

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It happens a couple of lines above, in _clutter_stage_clear_pick_stack().

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter: Remove pick mode from context</title>
<updated>2020-10-23T22:05:00+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-16T13:11:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=914173f3762f48f0cd8805b96477eafaccdf4a69'/>
<id>914173f3762f48f0cd8805b96477eafaccdf4a69</id>
<content type='text'>
It is not used anywhere now.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is not used anywhere now.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/actor: Remove '_paint' suffix from clutter_actor_should_pick_paint</title>
<updated>2020-10-23T22:04:26+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-16T13:06:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=ac1c5d802773be994d6e4a74b8065a3bd3832158'/>
<id>ac1c5d802773be994d6e4a74b8065a3bd3832158</id>
<content type='text'>
We're not using paint to pick anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We're not using paint to pick anymore.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
<entry>
<title>clutter/actor: Use pick context in clutter_actor_should_pick_paint()</title>
<updated>2020-10-23T22:03:39+00:00</updated>
<author>
<name>Georges Basile Stavracas Neto</name>
<email>georges.stavracas@gmail.com</email>
</author>
<published>2020-10-16T13:02:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/mutter.git/commit/?id=9ebe743e56a2213861b70b493bd11ad3e0fae504'/>
<id>9ebe743e56a2213861b70b493bd11ad3e0fae504</id>
<content type='text'>
Pass the ClutterPickContext to clutter_actor_should_pick_paint() and
check the pick mode from it.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pass the ClutterPickContext to clutter_actor_should_pick_paint() and
check the pick mode from it.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1509
</pre>
</div>
</content>
</entry>
</feed>
