After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 581813 - Make clutter the only compositor
Make clutter the only compositor
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
Depends on:
Blocks:
 
 
Reported: 2009-05-08 01:22 UTC by Jon Nettleton
Modified: 2009-06-30 13:48 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Always use clutter compositing (142.76 KB, patch)
2009-05-08 01:22 UTC, Jon Nettleton
none Details | Review
There can be only one compositor engine (505.45 KB, patch)
2009-06-25 19:50 UTC, Owen Taylor
committed Details | Review
Remove MetaCompositor virtualization (33.15 KB, patch)
2009-06-25 20:43 UTC, Owen Taylor
committed Details | Review
Make MetaCompositor the clutter compositor (8.71 KB, patch)
2009-06-25 20:43 UTC, Owen Taylor
committed Details | Review
Remove unused MetaCompositor functions (7.14 KB, patch)
2009-06-25 20:43 UTC, Owen Taylor
committed Details | Review

Description Jon Nettleton 2009-05-08 01:22:12 UTC
This patch removes the xrender compositor and make xcomposite, render, and clutter support mandatory.  This also allows us to remove all the #ifdefs associated with supported compilation without compositing.
Comment 1 Jon Nettleton 2009-05-08 01:22:55 UTC
Created attachment 134237 [details] [review]
Always use clutter compositing

Depends on http://bugzilla.gnome.org/show_bug.cgi?id=581238
Comment 2 Owen Taylor 2009-06-25 19:45:21 UTC
Generally, looks good. The on problem I saw is that the files

 mutter-plugin.c
 mutter-plugin-manager.[ch]
 mutter-module.[ch]

Shouldn't be renamed to compositor-* because they are defining types MutterPlugin, etc. The original Metacity style is probably more

   plugin.c plugin-manager.c module.c

And so forth, but naming the files after the namespaced-type names is pretty common throughout GNOME. I'll attach a revised version of your patch:

 - That is rebased against the override-redirect-exclusion-branch
 - That has those files renamed back to mutter-*
 - With a somewhat rewritten log message

(I know that you already did the rebase, but I needed this to work on some other compositor interfaces changes, and you weren't around, so it was easier to just redo it.)
Comment 3 Owen Taylor 2009-06-25 19:50:02 UTC
Created attachment 137381 [details] [review]
There can be only one compositor engine

Mutter is a Clutter-based compositing manager. So, remove the code for
the XRender-based compositor, and make it mandatory to have XComposite,
XRender and Clutter.

Run-time support for non-composited operation is left for now.

* src/compositor/mutter/: Move files from this subdirectory into
  the main compositor/ directory.

* compositor/compositor-xrender.ccompositor/compositor-xrender.h:
  Remove

* include/compositor-clutter.h: Remove this stray file, it had been
  replaced with compositor-mutter.h some time back.
Comment 4 Owen Taylor 2009-06-25 20:43:10 UTC
Created attachment 137387 [details] [review]
Remove MetaCompositor virtualization

Now that we only have one compositor, there's no reason to access the
compositor functions through a vtable. Remove the MetaCompositor virtualization
and make the clutter code implement the meta_compositor_* functions
directly.

Move the checks for the compositor being NULL from the vtable wrappers
to the calling code (most of them were already there, so just a few
needed to be added)

Note: the compositor is actually hard-coded on at the moment and the plan
  is to remove the non-composited code entirely, so the checks are
  added only to keep things neat: they have no practical effect.
Comment 5 Owen Taylor 2009-06-25 20:43:19 UTC
Created attachment 137388 [details] [review]
Make MetaCompositor the clutter compositor

* Move compositor-mutter.c to compositor.c

* Remove the 'Mutter' typedef and define the structure for
  MetaCompositor directly.
Comment 6 Owen Taylor 2009-06-25 20:43:25 UTC
Created attachment 137389 [details] [review]
Remove unused MetaCompositor functions

Remove a number of functions that were either entirely unimplemented
or had empty implementations for the Clutter-compositor.

 meta_compositor_begin_move()
 meta_compositor_update_move()
 meta_compositor_end_move()
 meta_compositor_set_active_window()
 meta_compositor_free_window()
Comment 7 Owen Taylor 2009-06-30 13:48:17 UTC
Pushed to master