Commit Graph

155 Commits

Author SHA1 Message Date
Owen W. Taylor
47af6a0bbf Nice looking scaledown with mipmap emulation
Add MutterTextureTower, an abstraction for getting a image with
the right level of detail for rendering at a particular scale,
by manually scaling down by powers of two.

This results in much better looking scaled window images when
mipmaps can't be used with texture_from_pixmap (which is the
typical case for current GL drivers.)

When framebuffer objects are available, they are used to do
the scaledown using the GPU without having to pull the data
back from video memory. A software codepath is also available
for the case when FBO's are not present, though performance
will suffer

https://bugzilla.gnome.org/show_bug.cgi?id=601032
2009-11-24 15:40:35 -05:00
Dan Winship
d04b15ee25 Remove MetaAltTabHandler
gnome-shell is no longer using MetaAltTabHandler, so there's no need
to keep that abstraction around.

This reverts commit 1d5117a6 (and a comment from 7b0ba87b), with a bit
of rebasing and whitespace cleanup.

https://bugzilla.gnome.org/show_bug.cgi?id=596210
2009-10-02 15:47:49 -04:00
Owen W. Taylor
e21ec0a271 Fix the dependency for mutter-enum-types.h
mutter-enum-types.h is built from $(libmutterinclude_base_headers) not
the non-existent $(mutter_source_h)
2009-08-31 18:12:29 -04:00
Colin Walters
e83c24c91b Add .AUTOPARALLEL flag to Makefile
This automatically enables parallelism with the patched make,
and flags us as maintaining a parallel build.
2009-08-30 20:21:02 -04:00
Michael Meeks
16466cf7d6 install errors.h header, bug 591566 2009-08-13 09:46:15 +01:00
Tomas Frydrych
bca3eaf709 Removed custom 'GIR' label for gir generation in silent-rules mode
http://bugzilla.gnome.org/show_bug.cgi?id=591120
2009-08-08 13:47:31 +01:00
Tomas Frydrych
0f64202a29 Added --enable-silent-rules if automake-1.11 is available 2009-08-07 17:58:02 +01:00
Colin Walters
a1ac1f4b2e Build using Clutter 1.0
Clutter just released 1.0, sync to that.
2009-07-29 12:08:53 -04:00
Owen W. Taylor
ec2c197e1f Fix confusion about MetaPreview in introspection build
MetaPreview is only built into libmutter-private, and not included in
the mutter executable. Linking mutter against libmutter-private was
inadvertently added when the introspection build process was set up,
but isn't actually needed, and if -Wl,-as-needed is added during the
build process, then the libmutter-private dependency will be skipped.

* Don't link mutter (or the test programs) against libmutter-private

* Exclude meta-preview.h from the set of headers we feed into the
  introspection build process

Reported by Patryk Zawadzki

http://bugzilla.gnome.org/show_bug.cgi?id=587975
2009-07-17 07:56:19 -04:00
Owen W. Taylor
65565a96b7 Fix 'make distcheck'
* Make generation of the .gir file work for srcdir != builddir
* Add files to CLEANFILES as needed
* Don't distribute the generated file mutter.schemas
2009-07-16 17:54:56 -04:00
Owen W. Taylor
83f8bfd2ca Reduce overpaint in the window group
When we are painting a stack of 5-10 maximized windows, the
standard bottom-to-top method of drawing every actor results
in a tremendous amount of overdraw and can easily max out
the available memory bandwidth on a low-end* graphics chipset.
It's even worse if window textures are being accessed over
the AGP bus.

When we have opaque windows, we can go ahead and compute visibility
ourselves (in classic X-server fashion) and use that information to
restrict drawing obscured actors.

* Add MutterWindowGroup - a ClutterGroup subclass with logic
  for figuring out obscured regions.

* Add mutter_window_get_obscured_region() to get the region
  obscured by that window.

* Add mutter_shaped_texture_set_clip_region() to hint
  a clip region to the painting code; this is set based on
  the computed visible region of MutterWindowGroup.

* Add tidy_texture_frame_set_needs_paint() to hint that the
  paint can be skipped entirely; this is used when we detect
  that the window shadow is entirely obscured.

http://bugzilla.gnome.org/show_bug.cgi?id=587344
2009-07-09 16:56:01 +01:00
Colin Walters
a454ad5c41 Promote include/main.h to public headers
Want to be able to Meta.quit() from bindings.
2009-07-08 17:25:54 -04:00
Owen W. Taylor
c60d4c2bc4 Separate source and header files for MutterWindow
compositor.c: Move MutterWindow code to mutter-window.c;
 rename map_win() to mutter_window_map(), etc.

mutter-window-private.h: New private header file for
 MutterWindow functions used internally to the compositor.

compositor-mutter.h: Move MutterWindow declarations to
 mutter-window.h; move a couple of private functions to
 compositor-private.h

compositor-private.h: Move MetaCompScreen declaration to here:
 Conceptually it's private to compositor.c, but MutterWindow
 manipulates some of the lists directly for now.

mutter-plugin.c compositor.c: Don't call mutter_window_effect_completed()
 for MUTTER_PLUGIN_SWITCH_WORKSPACE, but use a new
 mutter_switch_workspace_completed(), since the window is
 just used to identify a screen.

http://bugzilla.gnome.org/show_bug.cgi?id=587251
2009-07-05 23:56:51 +01:00
Owen W. Taylor
f0d22e18c4 Split shadow code into a separate file
Separate code related to creating the gaussian-blurred shadow texture
into a separate file.

Move the definition of MetaCompositor into a compositor-private.h
so that the shadow code can cache the source in the compositor
structure.

http://bugzilla.gnome.org/show_bug.cgi?id=587251
2009-07-05 23:28:38 +01:00
William Jon McCann
9d36e8d853 Add bits missing from last commit
Try to reconstruct the marshal list and enum type templates and
add templates to extra dist list.
2009-07-04 17:14:48 +01:00
Milan Bouchet-Valat
2c17ef4803 Emit signals when workspaces are added, removed or switched
The patch adds GLib marshalling code to Mutter, since it's required for the "workspace-switched" signal.
The definition of MetaMotionDirection enum is moved to common.h since it's now used in workspace.c.
A little cleaning is done in workspace.c:meta_workspace_activate_with_focus(), where compositor-specific code is merged with the rest of the function (required to emit signal), removing #ifdefs.
2009-07-04 10:57:52 +02:00
Jon Nettleton
94f64797de Remove wireframe mode and old effects framework
Remove the reduced_resources preference and all all wireframe logic and effects.

http://bugzilla.gnome.org/show_bug.cgi?id=581812
2009-06-30 09:35:12 -04:00
Owen W. Taylor
72149a054e Make MetaCompositor the clutter compositor
* Move compositor-mutter.c to compositor.c

* Remove the 'Mutter' typedef and define the structure for
  MetaCompositor directly.

http://bugzilla.gnome.org/show_bug.cgi?id=581813
2009-06-30 09:35:12 -04:00
Owen W. Taylor
3aff9726eb 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.

http://bugzilla.gnome.org/show_bug.cgi?id=581813
2009-06-30 09:34:45 -04:00
Jon Nettleton
0b8a57bcba 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.

http://bugzilla.gnome.org/show_bug.cgi?id=581813
2009-06-30 09:34:03 -04:00
Owen W. Taylor
a4cd66f599 Add better tracking of real stacking order
Wedging override-redirect windows into the constraint code in stack.c
results in Mutter getting confused about the stacking order of
these windows with respect to other windows, and may also in some
cases cause Mutter to restack override-redirect windows.

core/stack-tracker.c core/stack-tracker.h: MetaStackTracker - combine
  events received from the X server with local changes we have made
  to come up with the best possible idea of what the stacking order
  is at any one point in time.

core/screen.c core/screen-private.h: Create a MetaStackTracker for
  the screen.

core/display.c: Feed relevant events to MetaStackTracker

core/frame.c core/screen.c core/stack.c: When we make changes to the
  stacking order or add windows, record those changes immediatley
  in MetaStackTracker so we have the information without waiting
  for a round-trip.

include/ui.h ui/ui.c: meta_ui_create_frame_window add a return value
  for the X request serial used to create the window.

http://bugzilla.gnome.org/show_bug.cgi?id=585984
2009-06-29 23:04:59 -04:00
Jon Nettleton
51a6467968 Comprehensively rename to Mutter
Code:
All references in the code not related to themes, keybindings, or
GConf were changed from 'metacity' to 'mutter'. This includes, among other
things, strings, comments, the atoms used in the message protocol, and
the envvars used for debugging. The GConf schema file was reduced to
the 3 settings new to mutter.

The overall version was brought up to 2.27 to match current gnome.

Structure:
All files named '*metacity*' were renamed '*mutter*' with appropriate
changes in the automake system.  Files removed are
doc/creating_themes, src/themes, doc/metacity-theme.dtd,
metacity.doap.  These files will eventually end up in an external
gnome-wm-data module.

Installation location:
On the filesystem the mutter-plugindir was change from
$(libdir)/metacity/plugins/clutter to just $(libdir)/mutter/plugins.
The mutter-plugins.pc.in reflects these changes.

Note:
mutter.desktop.in and mutter-wm.desktop both continue to have
X-GNOME-WMSettingsModule=metacity set.  This allows
gnome-control-center to continue using libmetacity.so for
configuration.  This is fine since most the general keybindings and wm
settings are being read from /apps/metacity/* in gconf.
2009-06-16 14:17:10 -04:00
Vincent Untz
ea91834407 Remove metacity-dialog and always use zenity
This is a merge of metacity commits 0b3f45bb1b and 3d0bfbb4f4
2009-05-05 15:57:58 +02:00
Dan Winship
1d5117a607 Create a MetaAltTabHandler abstraction to allow alternate implementations
http://bugzilla.gnome.org/show_bug.cgi?id=580917
2009-05-04 10:25:58 -04:00
Owen W. Taylor
76a3f9d402 Build and install introspection information
Build a XML gir file and binary typelib file for the interfaces that
we are installing for plugin use. They are installed into $(pkglibdir)
since they are private to the application.

http://bugzilla.gnome.org/show_bug.cgi?id=580041
2009-04-24 09:54:18 -04:00
Tomas Frydrych
081272c5a9 Distcheck fixes. 2009-02-12 10:48:59 +00:00
Tomas Frydrych
a02e0b3c98 Install keybindings.h 2009-01-29 15:14:25 +00:00
Tomas Frydrych
25d628aea2 Exposed MetaGroup API. 2009-01-15 15:37:48 +00:00
Tomas Frydrych
3b3226b678 Merge branch 'plugin-gobject' into next-generation
Conflicts:

	src/compositor/mutter/compositor-mutter.c
	src/core/window.c
2008-12-18 12:41:56 +00:00
Tomas Frydrych
9821453b5f Merge branch 'upstream-2.25.55' into next-generation
Conflicts:

	configure.in
	src/Makefile.am
	src/core/screen-bindings.h
	src/metacity.schemas.in
2008-12-18 11:00:19 +00:00
Tomas Frydrych
c61eb77a70 GObjectified MutterPlugin. 2008-12-17 09:33:56 +00:00
Thomas James Alexander Thurman
157aa0af6d reviewed by: Thomas Thurman
* src/Makefile.am: reorder compiler flags so local includes come last.
	  Closes #562033.


svn path=/trunk/; revision=4029
2008-11-23 20:29:18 +00:00
Thomas Thurman
ac365b4ead (Apologies for huge commit; these were done on a transatlantic flight. This is why we need bzr.)
2008-11-22  Thomas Thurman  <tthurman@gnome.org>

        * src/core/all-keybindings.h: "backward", not "backwards" throughout.

2008-11-20  Thomas Thurman  <tthurman@gnome.org>

        * configure.in: turned on -Wall and -Werror in order to
          trap as many problems as possible.
        * src/ui/resizepopup.c: added correct #include.
        * src/ui/theme-viewer.c: initialised variable.
        * src/core/xprops.c: corrected cast.
        * src/core/main.c: added warning if chdir() fails.
        * src/core/schema-bindings.c: checking the return
          result of fgets().

2008-11-20  Thomas Thurman  <tthurman@gnome.org>

        Merged screen and window keybinding tables so that
        we can use just one file for the both.  Also incidentally
        closes #528337.  Further efficiencies of scale to come.

        * src/include/prefs.h: replace META_PREF_*_KEYBINDINGS
          with META_PREF_KEYBINDINGS
        * src/core/keybindings.c: replace *_bindings with key_bindings
          and similar throughout; all window-based functions are now
          guaranteed to receive a window so don't need to check for
          themselves
          (find_handler): moved so it can also be called from
                          rebuild_binding_table
        * src/core/display-private.h: replace *_bindings with key_bindings
        * src/core/prefs.c: update_*_binding becomes update_key_binding;
          (change_notify): tidy up references to "enormous if statement"
                           since it's almost entirely gone now
        * src/core/all-keybindings.h: new merged version of
                           screen-bindings.h and window-bindings.h.


svn path=/trunk/; revision=4022
2008-11-22 19:02:54 +00:00
Tomas Frydrych
79d749fc82 Install atomnames.h 2008-11-24 11:25:12 +00:00
Tomas Frydrych
7bef175590 MUTTER_PLUGIN_DIR variable/define
Define for use in plugin manager
  Makefile variable for plugin pc file and plugin installation.
2008-10-29 10:28:48 +00:00
Tomas Frydrych
a4a102726e Removed tridy-grid and scratch plugin 2008-10-29 09:01:50 +00:00
Tomas Frydrych
68c2f75558 Changes necessary to build plugins out of tree:
metacity-plugins.pc.in
  installation necessary header files
  fixed misplaced inclusion of config.h
2008-10-28 10:45:45 +00:00
Tomas Frydrych
07c1003905 Live previews for hidden windows.
ClutterActors for hidden windows (such windows on different than active
workspaces and windows that are minimized) are available, and reflect the
actual state of the window. This is intended for use in task-switchers etc.

This feature is disabled by default (due to increased demand on resources),
and can be enabled through the metacity/general/live_hidden_windows gconf key.

A trivial sample window switcher is included in the scratch plugin (activated
by clicking on the slide out panel).
2008-10-24 10:07:24 +01:00
Thomas Thurman
445b6ae6ed support builds outside tree properly. ditto.
2008-10-22  Thomas Thurman  <tthurman@gnome.org>

        * src/core/schema-bindings.c: support builds outside tree properly.
        * src/Makefile.am: ditto.


svn path=/trunk/; revision=3989
2008-10-23 04:02:48 +00:00
Thomas Thurman
788cbc91b2 Fixes to make distcheck work again.
2008-10-22  Thomas Thurman  <tthurman@gnome.org>

        Fixes to make distcheck work again.

        * src/Makefile.am: include *-binding.h, and make the schema
          building work when builddir != srcdir
        * po/POTFILES.in (src/core/keybindings.): include *-binding.h


svn path=/trunk/; revision=3985
2008-10-22 13:08:44 +00:00
Christian Persch
fd01dbaaea fix build when schemas are not installed. Closes #557335.
2008-10-21   Christian Persch  <chpe@gnome.org>

        * src/Makefile.am: fix build when schemas are not installed.
        Closes #557335.


svn path=/trunk/; revision=3969
2008-10-21 23:57:38 +00:00
Robert Bragg
2f790b0165 This changes the meta_compositor_clutter namespacing to simply "mutter" which
helps makes code much more readable.
2008-10-16 12:50:01 +01:00
Thomas Thurman
48f1dd5a7e Make the bindings in src/core/*-bindings.h generate GConf schemas too.
2008-10-12  Thomas Thurman  <tthurman@gnome.org>

        Make the bindings in src/core/*-bindings.h generate
        GConf schemas too.  Note that there's an i18n issue
        (documented in schema-bindings.c) which will be fixed
        next checkin.

        * src/core/schema-bindings.c: major fixup to make it
          ready for use as part of the actual build process.
        * src/Makefile.am: added magic to make it call schema-bindings
          after it builds it.
        * src/core/window-bindings.h: added comments;
          also, window menu was listed variously as alt-Space
          and alt-Print; it should have been alt-Space.
        * src/metacity.schemas.in.in: renamed from s/\.in$//,
          sentinel added for the generated bindings,
          warning at the top now untrue, and removed.


svn path=/trunk/; revision=3952
2008-10-12 23:29:09 +00:00
Tomas Frydrych
2fffd6fe9f Removed no longer needed completed() pointer from plugin struct. 2008-10-10 11:38:00 +01:00
Tomas Frydrych
f061a6d793 Added convenience function meta_comp_clutter_plugin_effect_completed() 2008-10-08 16:01:04 +01:00
Tomas Frydrych
976635a22b Merge branch 'clutter' of ssh://gitserver@git.o-hand.com/metacity-clutter into clutter 2008-10-08 14:53:37 +01:00
Robert Bragg
69c0da91e5 Creates a src/compositor/clutter directory to help de-clutter things 2008-10-08 14:17:54 +01:00
Tomas Frydrych
1addb6ddc1 Added -export-dynamic to metacity LDFLAGS for sake of plugins. 2008-10-08 12:28:20 +01:00
Tomas Frydrych
0a7fc94799 Revert "Build metacity as library so that plugins can link against it."
This reverts commit 57c2e6d716485205a9178afe01dbc43641b5c2aa.
2008-10-08 12:19:08 +01:00
Tomas Frydrych
bbdd7d9b15 Build metacity as library so that plugins can link against it.
Renamed original main() to meta_main(); added wrapper main() into metacity.c.
2008-10-08 10:11:57 +01:00