StTextureCache: adapt to MetaWindow changing icon prop type
Mutter change is https://git.gnome.org/browse/mutter/commit/?id=af7f51b992b20da543312fa9fdf1dcef39704b37 https://bugzilla.gnome.org/show_bug.cgi?id=742824
This commit is contained in:
parent
d8ca374a06
commit
af889168f0
@ -100,7 +100,7 @@ const CtrlAltTabManager = new Lang.Class({
|
||||
if (app)
|
||||
icon = app.create_icon_texture(POPUP_APPICON_SIZE);
|
||||
else
|
||||
icon = textureCache.bind_pixbuf_property(windows[i], 'icon');
|
||||
icon = textureCache.bind_cairo_surface_property(windows[i], 'icon');
|
||||
}
|
||||
|
||||
items.push({ name: windows[i].title,
|
||||
|
@ -189,7 +189,7 @@ window_backed_app_get_icon (ShellApp *app,
|
||||
}
|
||||
|
||||
window = window_backed_app_get_window (app);
|
||||
actor = st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (),
|
||||
actor = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
|
||||
G_OBJECT (window),
|
||||
"icon");
|
||||
g_object_set (actor, "width", (float) size, "height", (float) size, NULL);
|
||||
|
@ -628,18 +628,26 @@ static void
|
||||
st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
|
||||
const char *propname)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
cairo_surface_t *surface;
|
||||
CoglTexture *texdata;
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (backend);
|
||||
|
||||
g_object_get (bind->source, propname, &pixbuf, NULL);
|
||||
g_object_get (bind->source, propname, &surface, NULL);
|
||||
|
||||
g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf));
|
||||
|
||||
if (pixbuf != NULL)
|
||||
if (surface != NULL &&
|
||||
cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE &&
|
||||
(cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32 ||
|
||||
cairo_image_surface_get_format (surface) == CAIRO_FORMAT_RGB24))
|
||||
{
|
||||
texdata = pixbuf_to_cogl_texture (pixbuf);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
texdata = COGL_TEXTURE (cogl_texture_2d_new_from_data (ctx,
|
||||
cairo_image_surface_get_width (surface),
|
||||
cairo_image_surface_get_height (surface),
|
||||
cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32 ?
|
||||
COGL_PIXEL_FORMAT_BGRA_8888 : COGL_PIXEL_FORMAT_BGR_888,
|
||||
cairo_image_surface_get_stride (surface),
|
||||
cairo_image_surface_get_data (surface),
|
||||
NULL));
|
||||
clutter_texture_set_cogl_texture (bind->texture, texdata);
|
||||
cogl_object_unref (texdata);
|
||||
|
||||
@ -677,12 +685,12 @@ st_texture_cache_free_bind (gpointer data)
|
||||
}
|
||||
|
||||
/**
|
||||
* st_texture_cache_bind_pixbuf_property:
|
||||
* st_texture_cache_bind_cairo_surface_property:
|
||||
* @cache:
|
||||
* @object: A #GObject with a property @property_name of type #GdkPixbuf
|
||||
* @property_name: Name of a property
|
||||
*
|
||||
* Create a #ClutterTexture which tracks the #GdkPixbuf value of a GObject property
|
||||
* Create a #ClutterTexture which tracks the #cairo_surface_t value of a GObject property
|
||||
* named by @property_name. Unlike other methods in StTextureCache, the underlying
|
||||
* #CoglTexture is not shared by default with other invocations to this method.
|
||||
*
|
||||
@ -692,7 +700,7 @@ st_texture_cache_free_bind (gpointer data)
|
||||
* Return value: (transfer none): A new #ClutterActor
|
||||
*/
|
||||
ClutterActor *
|
||||
st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
|
||||
st_texture_cache_bind_cairo_surface_property (StTextureCache *cache,
|
||||
GObject *object,
|
||||
const char *property_name)
|
||||
{
|
||||
|
@ -28,7 +28,6 @@
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
#include <st/st-types.h>
|
||||
@ -77,7 +76,7 @@ st_texture_cache_load_sliced_image (StTextureCache *cache,
|
||||
GFunc load_callback,
|
||||
gpointer user_data);
|
||||
|
||||
ClutterActor *st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
|
||||
ClutterActor *st_texture_cache_bind_cairo_surface_property (StTextureCache *cache,
|
||||
GObject *object,
|
||||
const char *property_name);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user