diff --git a/demos/widget-factory/gtkloader.c b/demos/widget-factory/gtkloader.c deleted file mode 100644 index be91fa1ef3..0000000000 --- a/demos/widget-factory/gtkloader.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright © 2018 Benjamin Otte - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Authors: Benjamin Otte - */ - -#include "gtkloaderprivate.h" -#include - -enum { - PROP_RESOURCE = 1, -}; - -struct _GtkLoader -{ - GObject parent_instance; - - GdkTexture *texture; -}; - -struct _GtkLoaderClass -{ - GObjectClass parent_class; -}; - -static void -gtk_loader_paintable_snapshot (GdkPaintable *paintable, - GdkSnapshot *snapshot, - double width, - double height) -{ - GtkLoader *self = GTK_LOADER (paintable); - - if (self->texture) - gdk_paintable_snapshot (GDK_PAINTABLE (self->texture), snapshot, width, height); -} - -static GdkPaintable * -gtk_loader_paintable_get_current_image (GdkPaintable *paintable) -{ - GtkLoader *self = GTK_LOADER (paintable); - - if (self->texture) - return gdk_paintable_get_current_image (GDK_PAINTABLE (self->texture)); - - // FIXME: return a loading image - return NULL; -} - -static int -gtk_loader_paintable_get_intrinsic_width (GdkPaintable *paintable) -{ - GtkLoader *self = GTK_LOADER (paintable); - - if (self->texture) - return gdk_paintable_get_intrinsic_width (GDK_PAINTABLE (self->texture)); - - return 0; -} - -static int -gtk_loader_paintable_get_intrinsic_height (GdkPaintable *paintable) -{ - GtkLoader *self = GTK_LOADER (paintable); - - if (self->texture) - return gdk_paintable_get_intrinsic_height (GDK_PAINTABLE (self->texture)); - - return 0; -} - -static double -gtk_loader_paintable_get_intrinsic_aspect_ratio (GdkPaintable *paintable) -{ - GtkLoader *self = GTK_LOADER (paintable); - - if (self->texture) - return gdk_paintable_get_intrinsic_aspect_ratio (GDK_PAINTABLE (self->texture)); - - return 0; -}; - -static void -gtk_loader_paintable_init (GdkPaintableInterface *iface) -{ - iface->snapshot = gtk_loader_paintable_snapshot; - iface->get_current_image = gtk_loader_paintable_get_current_image; - iface->get_intrinsic_width = gtk_loader_paintable_get_intrinsic_width; - iface->get_intrinsic_height = gtk_loader_paintable_get_intrinsic_height; - iface->get_intrinsic_aspect_ratio = gtk_loader_paintable_get_intrinsic_aspect_ratio; -} - -G_DEFINE_TYPE_EXTENDED (GtkLoader, gtk_loader, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (GDK_TYPE_PAINTABLE, - gtk_loader_paintable_init)) - -static void -gtk_loader_dispose (GObject *object) -{ - GtkLoader *self = GTK_LOADER (object); - - g_clear_object (&self->texture); - - G_OBJECT_CLASS (gtk_loader_parent_class)->dispose (object); -} - -static void gtk_loader_set_resource (GtkLoader *self, const char *resource); - -static void -gtk_loader_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkLoader *self = (GtkLoader *)object; - - switch (prop_id) - { - case PROP_RESOURCE: - gtk_loader_set_resource (self, g_value_get_string (value)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_loader_class_init (GtkLoaderClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->dispose = gtk_loader_dispose; - gobject_class->set_property = gtk_loader_set_property; - - g_object_class_install_property (gobject_class, PROP_RESOURCE, - g_param_spec_string ("resource", "", "", - NULL, - G_PARAM_WRITABLE|G_PARAM_CONSTRUCT_ONLY)); -} - -static void -gtk_loader_init (GtkLoader *self) -{ -} - -static void -load_texture_in_thread (GTask *task, - gpointer source_object, - gpointer task_data, - GCancellable *cancellable) -{ - const char *resource = task_data; - GdkTexture *texture; - GError *error = NULL; - - texture = gdk_texture_new_from_resource (resource); - - if (texture) - g_task_return_pointer (task, texture, g_object_unref); - else - g_task_return_error (task, error); -} - -static void -texture_finished (GObject *source, - GAsyncResult *result, - gpointer data) -{ - GtkLoader *self = GTK_LOADER (source); - GdkTexture *texture; - GError *error = NULL; - - texture = g_task_propagate_pointer (G_TASK (result), &error); - - if (texture) - { - self->texture = g_object_ref (texture); - - gdk_paintable_invalidate_size (GDK_PAINTABLE (self)); - gdk_paintable_invalidate_contents (GDK_PAINTABLE (self)); - } -} - -static void -gtk_loader_set_resource (GtkLoader *self, - const char *resource) -{ - GTask *task; - - task = g_task_new (self, NULL, texture_finished, NULL); - g_task_set_task_data (task, g_strdup (resource), (GDestroyNotify)g_free); - g_task_run_in_thread (task, load_texture_in_thread); - g_object_unref (task); -} - -GdkPaintable * -gtk_loader_new (void) -{ - return g_object_new (GTK_TYPE_LOADER, NULL); -} diff --git a/demos/widget-factory/gtkloaderprivate.h b/demos/widget-factory/gtkloaderprivate.h deleted file mode 100644 index c0b2072cd3..0000000000 --- a/demos/widget-factory/gtkloaderprivate.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright © 2021 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Authors: Matthias Clasen - */ - -#ifndef __GTK_LOADER_H__ -#define __GTK_LOADER_H__ - -#include - -G_BEGIN_DECLS - -#define GTK_TYPE_LOADER (gtk_loader_get_type ()) - -G_DECLARE_FINAL_TYPE (GtkLoader, gtk_loader, GTK, LOADER, GObject) - -GdkPaintable * gtk_loader_new (void); - -G_END_DECLS - -#endif /* __GTK_SCALER_H__ */ diff --git a/demos/widget-factory/meson.build b/demos/widget-factory/meson.build index 2763111570..a7906fb83c 100644 --- a/demos/widget-factory/meson.build +++ b/demos/widget-factory/meson.build @@ -65,7 +65,7 @@ else endif executable('gtk4-widget-factory', - sources: ['widget-factory.c', 'gtkloader.c', widgetfactory_resources], + sources: ['widget-factory.c', widgetfactory_resources], c_args: common_cflags, dependencies: [ libgtk_dep, demo_conf_h ], include_directories: confinc, diff --git a/demos/widget-factory/widget-factory.c b/demos/widget-factory/widget-factory.c index c18b502bcf..0c4b21c81c 100644 --- a/demos/widget-factory/widget-factory.c +++ b/demos/widget-factory/widget-factory.c @@ -26,7 +26,6 @@ #include #include "demo_conf.h" -#include "gtkloaderprivate.h" static void change_dark_state (GSimpleAction *action, @@ -2055,7 +2054,6 @@ activate (GApplication *app) GtkEventController *controller; g_type_ensure (my_text_view_get_type ()); - g_type_ensure (gtk_loader_get_type ()); provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, "/org/gtk/WidgetFactory4/widget-factory.css"); diff --git a/demos/widget-factory/widget-factory.ui b/demos/widget-factory/widget-factory.ui index 259c4def99..92c033dccf 100644 --- a/demos/widget-factory/widget-factory.ui +++ b/demos/widget-factory/widget-factory.ui @@ -1260,11 +1260,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus. - - - /org/gtk/WidgetFactory4/sunset.jpg - - + resource:///org/gtk/WidgetFactory4/sunset.jpg @@ -1290,11 +1286,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus. - - - /org/gtk/WidgetFactory4/nyc.jpg - - + resource:///org/gtk/WidgetFactory4/nyc.jpg @@ -1320,11 +1312,7 @@ Suspendisse feugiat quam quis dolor accumsan cursus. - - - /org/gtk/WidgetFactory4/beach.jpg - - + resource:///org/gtk/WidgetFactory4/beach.jpg diff --git a/gsk/ngl/gskngldriver.c b/gsk/ngl/gskngldriver.c index 07ac4b3c75..c1a37c0245 100644 --- a/gsk/ngl/gskngldriver.c +++ b/gsk/ngl/gskngldriver.c @@ -43,12 +43,6 @@ #define ATLAS_SIZE 512 #define MAX_OLD_RATIO 0.5 -typedef struct _GskNglTextureState -{ - GdkGLContext *context; - GLuint texture_id; -} GskNglTextureState; - G_DEFINE_TYPE (GskNglDriver, gsk_ngl_driver, G_TYPE_OBJECT) static guint @@ -1292,6 +1286,11 @@ gsk_ngl_driver_release_texture_by_id (GskNglDriver *self, gsk_ngl_driver_release_texture (self, texture); } +typedef struct _GskNglTextureState +{ + GdkGLContext *context; + GLuint texture_id; +} GskNglTextureState; static void create_texture_from_texture_destroy (gpointer data)