Compare commits
	
		
			11 Commits
		
	
	
		
			wip/nielsd
			...
			wip/gcampa
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					4f56cfb1e6 | ||
| 
						 | 
					db7fa793b0 | ||
| 
						 | 
					f254879226 | ||
| 
						 | 
					94ac7ff02c | ||
| 
						 | 
					7332eb3db2 | ||
| 
						 | 
					b61e221e8f | ||
| 
						 | 
					f278fd92d5 | ||
| 
						 | 
					0a1ee4aa54 | ||
| 
						 | 
					5a83ef71c9 | ||
| 
						 | 
					3e723caabd | ||
| 
						 | 
					dbc9303efd | 
@@ -48,6 +48,7 @@ libmutter_la_SOURCES =				\
 | 
			
		||||
	compositor/compositor-private.h		\
 | 
			
		||||
	compositor/meta-background-actor.c	\
 | 
			
		||||
	compositor/meta-background-actor-private.h	\
 | 
			
		||||
	compositor/meta-background.c		\
 | 
			
		||||
	compositor/meta-module.c		\
 | 
			
		||||
	compositor/meta-module.h		\
 | 
			
		||||
	compositor/meta-plugin.c		\
 | 
			
		||||
@@ -226,7 +227,7 @@ typelib_DATA = Meta-$(api_version).typelib
 | 
			
		||||
INTROSPECTION_GIRS = Meta-$(api_version).gir
 | 
			
		||||
 | 
			
		||||
Meta-$(api_version).gir: libmutter.la
 | 
			
		||||
@META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0
 | 
			
		||||
@META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0 GnomeDesktop-3.0
 | 
			
		||||
@META_GIR@_EXPORT_PACKAGES = libmutter
 | 
			
		||||
@META_GIR@_CFLAGS = $(INCLUDES)
 | 
			
		||||
@META_GIR@_LIBS = libmutter.la
 | 
			
		||||
 
 | 
			
		||||
@@ -23,47 +23,8 @@
 | 
			
		||||
 | 
			
		||||
#include "cogl-utils.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_create_color_texture_4ub:
 | 
			
		||||
 * @red:
 | 
			
		||||
 * @green:
 | 
			
		||||
 * @blue:
 | 
			
		||||
 * @alpha:
 | 
			
		||||
 * @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
 | 
			
		||||
 *   %COGL_TEXTURE_NO_SLICING is useful if the texture will be
 | 
			
		||||
 *   repeated to create a constant color fill, since hardware
 | 
			
		||||
 *   repeat can't be used for a sliced texture.
 | 
			
		||||
 *
 | 
			
		||||
 * Creates a texture that is a single pixel with the specified
 | 
			
		||||
 * unpremultiplied color components.
 | 
			
		||||
 *
 | 
			
		||||
 * Return value: (transfer full): a newly created Cogl texture
 | 
			
		||||
 */
 | 
			
		||||
CoglHandle
 | 
			
		||||
meta_create_color_texture_4ub (guint8           red,
 | 
			
		||||
                               guint8           green,
 | 
			
		||||
                               guint8           blue,
 | 
			
		||||
                               guint8           alpha,
 | 
			
		||||
                               CoglTextureFlags flags)
 | 
			
		||||
{
 | 
			
		||||
  CoglColor color;
 | 
			
		||||
  guint8 pixel[4];
 | 
			
		||||
 | 
			
		||||
  cogl_color_set_from_4ub (&color, red, green, blue, alpha);
 | 
			
		||||
  cogl_color_premultiply (&color);
 | 
			
		||||
 | 
			
		||||
  pixel[0] = cogl_color_get_red_byte (&color);
 | 
			
		||||
  pixel[1] = cogl_color_get_green_byte (&color);
 | 
			
		||||
  pixel[2] = cogl_color_get_blue_byte (&color);
 | 
			
		||||
  pixel[3] = cogl_color_get_alpha_byte (&color);
 | 
			
		||||
 | 
			
		||||
  return cogl_texture_new_from_data (1, 1,
 | 
			
		||||
                                     flags,
 | 
			
		||||
                                     COGL_PIXEL_FORMAT_RGBA_8888_PRE,
 | 
			
		||||
                                     COGL_PIXEL_FORMAT_ANY,
 | 
			
		||||
                                     4, pixel);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
 | 
			
		||||
#include <clutter/clutter.h>
 | 
			
		||||
 | 
			
		||||
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
 | 
			
		||||
 | 
			
		||||
@@ -79,32 +40,69 @@ meta_create_color_texture_4ub (guint8           red,
 | 
			
		||||
 *
 | 
			
		||||
 * Return value: (transfer full): a newly created Cogl material
 | 
			
		||||
 */
 | 
			
		||||
CoglHandle
 | 
			
		||||
CoglPipeline *
 | 
			
		||||
meta_create_texture_material (CoglHandle src_texture)
 | 
			
		||||
{
 | 
			
		||||
  static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
 | 
			
		||||
  CoglHandle material;
 | 
			
		||||
  static CoglPipeline *texture_material_template = NULL;
 | 
			
		||||
  CoglPipeline *material;
 | 
			
		||||
 | 
			
		||||
  /* We use a material that has a dummy texture as a base for all
 | 
			
		||||
     texture materials. The idea is that only the Cogl texture object
 | 
			
		||||
     would be different in the children so it is likely that Cogl will
 | 
			
		||||
     be able to share GL programs between all the textures. */
 | 
			
		||||
  if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
 | 
			
		||||
  if (G_UNLIKELY (texture_material_template == NULL))
 | 
			
		||||
    {
 | 
			
		||||
      CoglHandle dummy_texture;
 | 
			
		||||
      ClutterBackend *backend = clutter_get_default_backend ();
 | 
			
		||||
      CoglContext *context = clutter_backend_get_cogl_context (backend);
 | 
			
		||||
 | 
			
		||||
      dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
                                                     COGL_TEXTURE_NONE);
 | 
			
		||||
 | 
			
		||||
      texture_material_template = cogl_material_new ();
 | 
			
		||||
      cogl_material_set_layer (texture_material_template, 0, dummy_texture);
 | 
			
		||||
      cogl_handle_unref (dummy_texture);
 | 
			
		||||
      texture_material_template = cogl_pipeline_new (context);
 | 
			
		||||
      cogl_pipeline_set_layer_null_texture (texture_material_template,
 | 
			
		||||
                                            0, COGL_TEXTURE_TYPE_2D);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  material = cogl_material_copy (texture_material_template);
 | 
			
		||||
  material = cogl_pipeline_copy (texture_material_template);
 | 
			
		||||
 | 
			
		||||
  if (src_texture != COGL_INVALID_HANDLE)
 | 
			
		||||
    cogl_material_set_layer (material, 0, src_texture);
 | 
			
		||||
    cogl_pipeline_set_layer_texture (material, 0, src_texture);
 | 
			
		||||
 | 
			
		||||
  return material;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_create_crossfade_material:
 | 
			
		||||
 * @src_texture_0: (allow-none): the texture to crossfade from
 | 
			
		||||
 * @src_texture_1: (allow-none): the texture to crossfade to
 | 
			
		||||
 *
 | 
			
		||||
 * Creates a material with two layers, using a combine constant to
 | 
			
		||||
 * crossfade between them.
 | 
			
		||||
 *
 | 
			
		||||
 * Return value: (transfer full): a newly created Cogl material
 | 
			
		||||
 */
 | 
			
		||||
CoglPipeline *
 | 
			
		||||
meta_create_crossfade_material (CoglHandle src_texture_0,
 | 
			
		||||
                                CoglHandle src_texture_1)
 | 
			
		||||
{
 | 
			
		||||
  static CoglPipeline *texture_material_template = NULL;
 | 
			
		||||
  CoglPipeline *material;
 | 
			
		||||
 | 
			
		||||
  if (G_UNLIKELY (texture_material_template == NULL))
 | 
			
		||||
    {
 | 
			
		||||
      ClutterBackend *backend = clutter_get_default_backend ();
 | 
			
		||||
      CoglContext *context = clutter_backend_get_cogl_context (backend);
 | 
			
		||||
 | 
			
		||||
      texture_material_template = cogl_pipeline_new (context);
 | 
			
		||||
 | 
			
		||||
      cogl_pipeline_set_layer_null_texture (texture_material_template,
 | 
			
		||||
                                            0, COGL_TEXTURE_TYPE_2D);
 | 
			
		||||
      cogl_pipeline_set_layer_null_texture (texture_material_template,
 | 
			
		||||
                                            1, COGL_TEXTURE_TYPE_2D);
 | 
			
		||||
      cogl_pipeline_set_layer_combine (texture_material_template,
 | 
			
		||||
                                       1, "RGBA = INTERPOLATE (TEXTURE, PREVIOUS, CONSTANT[A])",
 | 
			
		||||
                                       NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  material = cogl_pipeline_copy (texture_material_template);
 | 
			
		||||
 | 
			
		||||
  if (src_texture_0 != COGL_INVALID_HANDLE)
 | 
			
		||||
    cogl_pipeline_set_layer_texture (material, 0, src_texture_0);
 | 
			
		||||
  if (src_texture_1 != COGL_INVALID_HANDLE)
 | 
			
		||||
    cogl_pipeline_set_layer_texture (material, 1, src_texture_1);
 | 
			
		||||
 | 
			
		||||
  return material;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,11 @@
 | 
			
		||||
#ifndef __META_COGL_UTILS_H__
 | 
			
		||||
#define __META_COGL_UTILS_H__
 | 
			
		||||
 | 
			
		||||
#define COGL_ENABLE_EXPERIMENTAL_API
 | 
			
		||||
#include <cogl/cogl.h>
 | 
			
		||||
 | 
			
		||||
CoglHandle meta_create_color_texture_4ub (guint8           red,
 | 
			
		||||
                                          guint8           green,
 | 
			
		||||
                                          guint8           blue,
 | 
			
		||||
                                          guint8           alpha,
 | 
			
		||||
                                          CoglTextureFlags flags);
 | 
			
		||||
CoglHandle meta_create_texture_material  (CoglHandle src_texture);
 | 
			
		||||
CoglPipeline *meta_create_texture_material   (CoglHandle src_texture);
 | 
			
		||||
CoglPipeline *meta_create_crossfade_material (CoglHandle src_texture_0,
 | 
			
		||||
                                              CoglHandle src_texture_1);
 | 
			
		||||
 | 
			
		||||
#endif /* __META_COGL_UTILS_H__ */
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,6 @@ struct _MetaCompScreen
 | 
			
		||||
 | 
			
		||||
  ClutterActor          *stage, *window_group, *overlay_group;
 | 
			
		||||
  ClutterActor          *background_actor;
 | 
			
		||||
  ClutterActor		*hidden_group;
 | 
			
		||||
  GList                 *windows;
 | 
			
		||||
  GHashTable            *windows_by_xid;
 | 
			
		||||
  Window                 output;
 | 
			
		||||
 
 | 
			
		||||
@@ -117,21 +117,6 @@ process_property_notify (MetaCompositor	*compositor,
 | 
			
		||||
{
 | 
			
		||||
  MetaWindowActor *window_actor;
 | 
			
		||||
 | 
			
		||||
  if (event->atom == compositor->atom_x_root_pixmap)
 | 
			
		||||
    {
 | 
			
		||||
      GSList *l;
 | 
			
		||||
 | 
			
		||||
      for (l = meta_display_get_screens (compositor->display); l; l = l->next)
 | 
			
		||||
        {
 | 
			
		||||
	  MetaScreen  *screen = l->data;
 | 
			
		||||
          if (event->window == meta_screen_get_xroot (screen))
 | 
			
		||||
            {
 | 
			
		||||
              meta_background_actor_update (screen);
 | 
			
		||||
              return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (window == NULL)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
@@ -588,22 +573,17 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  info->window_group = meta_window_group_new (screen);
 | 
			
		||||
  info->background_actor = meta_background_actor_new_for_screen (screen);
 | 
			
		||||
  info->background_actor = meta_background_actor_new (screen, NULL);
 | 
			
		||||
  info->overlay_group = clutter_group_new ();
 | 
			
		||||
  info->hidden_group = clutter_group_new ();
 | 
			
		||||
 | 
			
		||||
  clutter_container_add (CLUTTER_CONTAINER (info->window_group),
 | 
			
		||||
                         info->background_actor,
 | 
			
		||||
                         NULL);
 | 
			
		||||
  meta_window_group_set_background (META_WINDOW_GROUP (info->window_group),
 | 
			
		||||
                                    META_BACKGROUND_ACTOR (info->background_actor));
 | 
			
		||||
 | 
			
		||||
  clutter_container_add (CLUTTER_CONTAINER (info->stage),
 | 
			
		||||
                         info->window_group,
 | 
			
		||||
                         info->overlay_group,
 | 
			
		||||
			 info->hidden_group,
 | 
			
		||||
                         NULL);
 | 
			
		||||
 | 
			
		||||
  clutter_actor_hide (info->hidden_group);
 | 
			
		||||
 | 
			
		||||
  info->plugin_mgr = meta_plugin_manager_new (screen);
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
@@ -1202,8 +1182,6 @@ meta_compositor_sync_screen_size (MetaCompositor  *compositor,
 | 
			
		||||
 | 
			
		||||
  XResizeWindow (xdisplay, xwin, width, height);
 | 
			
		||||
 | 
			
		||||
  meta_background_actor_screen_size_changed (screen);
 | 
			
		||||
 | 
			
		||||
  meta_verbose ("Changed size for stage on screen %d to %dx%d\n",
 | 
			
		||||
		meta_screen_get_screen_number (screen),
 | 
			
		||||
		width, height);
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,39 @@
 | 
			
		||||
void meta_background_actor_set_visible_region  (MetaBackgroundActor *self,
 | 
			
		||||
                                                cairo_region_t      *visible_region);
 | 
			
		||||
 | 
			
		||||
void meta_background_actor_update              (MetaScreen *screen);
 | 
			
		||||
void meta_background_actor_screen_size_changed (MetaScreen *screen);
 | 
			
		||||
/**
 | 
			
		||||
 * MetaBackgroundSlideshow:
 | 
			
		||||
 *
 | 
			
		||||
 * A class for handling animated backgrounds.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define META_TYPE_BACKGROUND_SLIDESHOW            (meta_background_slideshow_get_type ())
 | 
			
		||||
#define META_BACKGROUND_SLIDESHOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BACKGROUND_SLIDESHOW, MetaBackgroundSlideshow))
 | 
			
		||||
#define META_BACKGROUND_SLIDESHOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_BACKGROUND_SLIDESHOW, MetaBackgroundSlideshowClass))
 | 
			
		||||
#define META_IS_BACKGROUND_SLIDESHOW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BACKGROUND_SLIDESHOW))
 | 
			
		||||
#define META_IS_BACKGROUND_SLIDESHOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_BACKGROUND_SLIDESHOW))
 | 
			
		||||
#define META_BACKGROUND_SLIDESHOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_BACKGROUND_SLIDESHOW, MetaBackgroundSlideshowClass))
 | 
			
		||||
 | 
			
		||||
typedef struct _MetaBackgroundSlideshow        MetaBackgroundSlideshow;
 | 
			
		||||
typedef struct _MetaBackgroundSlideshowClass   MetaBackgroundSlideshowClass;
 | 
			
		||||
 | 
			
		||||
GType meta_background_slideshow_get_type (void) G_GNUC_CONST;
 | 
			
		||||
 | 
			
		||||
MetaBackgroundSlideshow     *meta_background_slideshow_new         (MetaScreen          *screen,
 | 
			
		||||
                                                                    const char          *picture_uri);
 | 
			
		||||
 | 
			
		||||
const char                  *meta_background_slideshow_get_uri     (MetaBackgroundSlideshow *slideshow);
 | 
			
		||||
 | 
			
		||||
GTask                       *meta_background_slideshow_draw_async  (MetaBackgroundSlideshow  *slideshow,
 | 
			
		||||
                                                                    GCancellable             *cancellable,
 | 
			
		||||
                                                                    GAsyncReadyCallback       callback,
 | 
			
		||||
                                                                    gpointer                  user_data);
 | 
			
		||||
CoglHandle                   meta_background_slideshow_draw_finish (MetaBackgroundSlideshow  *slideshow,
 | 
			
		||||
                                                                    GAsyncResult             *result,
 | 
			
		||||
                                                                    GError                  **error);
 | 
			
		||||
 | 
			
		||||
int                          meta_background_slideshow_get_next_timeout (MetaBackgroundSlideshow *slideshow);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1005
									
								
								src/compositor/meta-background.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1005
									
								
								src/compositor/meta-background.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -22,6 +22,13 @@ struct _MetaWindowGroup
 | 
			
		||||
  ClutterGroup parent;
 | 
			
		||||
 | 
			
		||||
  MetaScreen *screen;
 | 
			
		||||
  MetaBackgroundActor *background;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
  PROP_0,
 | 
			
		||||
  PROP_BACKGROUND,
 | 
			
		||||
  PROP_LAST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
G_DEFINE_TYPE (MetaWindowGroup, meta_window_group, CLUTTER_TYPE_GROUP);
 | 
			
		||||
@@ -270,7 +277,8 @@ meta_window_group_paint (ClutterActor *actor)
 | 
			
		||||
      if (clutter_actor_has_effects (l->data))
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      if (META_IS_WINDOW_ACTOR (l->data))
 | 
			
		||||
      if (l->data != window_group->background &&
 | 
			
		||||
          META_IS_WINDOW_ACTOR (l->data))
 | 
			
		||||
        {
 | 
			
		||||
          MetaWindowActor *window_actor = l->data;
 | 
			
		||||
          int x, y;
 | 
			
		||||
@@ -296,7 +304,7 @@ meta_window_group_paint (ClutterActor *actor)
 | 
			
		||||
          meta_window_actor_set_visible_region_beneath (window_actor, visible_region);
 | 
			
		||||
          cairo_region_translate (visible_region, x, y);
 | 
			
		||||
        }
 | 
			
		||||
      else if (META_IS_BACKGROUND_ACTOR (l->data))
 | 
			
		||||
      else if (l->data == window_group->background)
 | 
			
		||||
        {
 | 
			
		||||
          MetaBackgroundActor *background_actor = l->data;
 | 
			
		||||
          int x, y;
 | 
			
		||||
@@ -322,12 +330,13 @@ meta_window_group_paint (ClutterActor *actor)
 | 
			
		||||
   */
 | 
			
		||||
  for (l = children; l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      if (META_IS_WINDOW_ACTOR (l->data))
 | 
			
		||||
      if (l->data != window_group->background &&
 | 
			
		||||
          META_IS_WINDOW_ACTOR (l->data))
 | 
			
		||||
        {
 | 
			
		||||
          MetaWindowActor *window_actor = l->data;
 | 
			
		||||
          meta_window_actor_reset_visible_regions (window_actor);
 | 
			
		||||
        }
 | 
			
		||||
      else if (META_IS_BACKGROUND_ACTOR (l->data))
 | 
			
		||||
      else if (l->data == window_group->background)
 | 
			
		||||
        {
 | 
			
		||||
          MetaBackgroundActor *background_actor = l->data;
 | 
			
		||||
          meta_background_actor_set_visible_region (background_actor, NULL);
 | 
			
		||||
@@ -337,12 +346,70 @@ meta_window_group_paint (ClutterActor *actor)
 | 
			
		||||
  g_list_free (children);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_window_group_set_background (MetaWindowGroup     *self,
 | 
			
		||||
                                  MetaBackgroundActor *actor)
 | 
			
		||||
{
 | 
			
		||||
  self->background = actor;
 | 
			
		||||
  clutter_actor_add_child (CLUTTER_ACTOR (self),
 | 
			
		||||
                           CLUTTER_ACTOR (actor));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_window_group_get_property (GObject         *object,
 | 
			
		||||
                                guint            prop_id,
 | 
			
		||||
                                GValue          *value,
 | 
			
		||||
                                GParamSpec      *pspec)
 | 
			
		||||
{
 | 
			
		||||
  MetaWindowGroup *self = META_WINDOW_GROUP (object);
 | 
			
		||||
 | 
			
		||||
  switch (prop_id)
 | 
			
		||||
    {
 | 
			
		||||
    case PROP_BACKGROUND:
 | 
			
		||||
      g_value_set_object (value, self->background);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_window_group_set_property (GObject         *object,
 | 
			
		||||
                                guint            prop_id,
 | 
			
		||||
                                const GValue    *value,
 | 
			
		||||
                                GParamSpec      *pspec)
 | 
			
		||||
{
 | 
			
		||||
  MetaWindowGroup *self = META_WINDOW_GROUP (object);
 | 
			
		||||
 | 
			
		||||
  switch (prop_id)
 | 
			
		||||
    {
 | 
			
		||||
    case PROP_BACKGROUND:
 | 
			
		||||
      meta_window_group_set_background (self, g_value_get_object (value));
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_window_group_class_init (MetaWindowGroupClass *klass)
 | 
			
		||||
{
 | 
			
		||||
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
 | 
			
		||||
  ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
 | 
			
		||||
 | 
			
		||||
  object_class->get_property = meta_window_group_get_property;
 | 
			
		||||
  object_class->set_property = meta_window_group_set_property;
 | 
			
		||||
 | 
			
		||||
  actor_class->paint = meta_window_group_paint;
 | 
			
		||||
 | 
			
		||||
  g_object_class_install_property (object_class, PROP_BACKGROUND,
 | 
			
		||||
                                   g_param_spec_object ("background",
 | 
			
		||||
                                                        "Background actor",
 | 
			
		||||
                                                        "The primary background actor",
 | 
			
		||||
                                                        META_TYPE_BACKGROUND_ACTOR,
 | 
			
		||||
                                                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@
 | 
			
		||||
#include <clutter/clutter.h>
 | 
			
		||||
 | 
			
		||||
#include <meta/screen.h>
 | 
			
		||||
#include <meta/meta-background-actor.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * MetaWindowGroup:
 | 
			
		||||
@@ -49,4 +50,7 @@ GType meta_window_group_get_type (void);
 | 
			
		||||
 | 
			
		||||
ClutterActor *meta_window_group_new (MetaScreen *screen);
 | 
			
		||||
 | 
			
		||||
void  meta_window_group_set_background (MetaWindowGroup     *group,
 | 
			
		||||
                                        MetaBackgroundActor *background);
 | 
			
		||||
 | 
			
		||||
#endif /* META_WINDOW_GROUP_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -239,7 +239,7 @@ meta_screen_class_init (MetaScreenClass *klass)
 | 
			
		||||
		  G_TYPE_FROM_CLASS (object_class),
 | 
			
		||||
		  G_SIGNAL_RUN_LAST,
 | 
			
		||||
		  G_STRUCT_OFFSET (MetaScreenClass, monitors_changed),
 | 
			
		||||
          NULL, NULL, NULL,
 | 
			
		||||
                  NULL, NULL, NULL,
 | 
			
		||||
		  G_TYPE_NONE, 0);
 | 
			
		||||
 | 
			
		||||
  g_object_class_install_property (object_class,
 | 
			
		||||
 
 | 
			
		||||
@@ -60,7 +60,8 @@ struct _MetaBackgroundActor
 | 
			
		||||
 | 
			
		||||
GType meta_background_actor_get_type (void);
 | 
			
		||||
 | 
			
		||||
ClutterActor *meta_background_actor_new_for_screen (MetaScreen *screen);
 | 
			
		||||
ClutterActor *meta_background_actor_new (MetaScreen *screen,
 | 
			
		||||
                                         GSettings  *settings);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * MetaSnippetHook:
 | 
			
		||||
@@ -83,18 +84,4 @@ typedef enum {
 | 
			
		||||
  META_SNIPPET_HOOK_TEXTURE_LOOKUP
 | 
			
		||||
} MetaSnippetHook;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void meta_background_actor_add_glsl_snippet (MetaBackgroundActor *actor,
 | 
			
		||||
                                             MetaSnippetHook      hook,
 | 
			
		||||
                                             const char          *declarations,
 | 
			
		||||
                                             const char          *code,
 | 
			
		||||
                                             gboolean             is_replace);
 | 
			
		||||
 | 
			
		||||
void meta_background_actor_set_uniform_float (MetaBackgroundActor *actor,
 | 
			
		||||
                                              const char          *uniform_name,
 | 
			
		||||
                                              int                  n_components,
 | 
			
		||||
                                              int                  count,
 | 
			
		||||
                                              const float         *uniform,
 | 
			
		||||
                                              int                  uniform_length);
 | 
			
		||||
 | 
			
		||||
#endif /* META_BACKGROUND_ACTOR_H */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user