[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/trunk r10830: Add AGG support that works w
From: |
rob |
Subject: |
[Gnash-commit] /srv/bzr/gnash/trunk r10830: Add AGG support that works with the canvas in addition to the existing cairo support. |
Date: |
Thu, 23 Apr 2009 12:14:24 -0600 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 10830
committer: address@hidden
branch nick: trunk
timestamp: Thu 2009-04-23 12:14:24 -0600
message:
Add AGG support that works with the canvas in addition to the existing cairo
support.
modified:
gui/am-frag/gtk.am
gui/gtk.cpp
gui/gtk_canvas.cpp
gui/pythonmod/gnash-view.cpp
=== modified file 'gui/am-frag/gtk.am'
--- a/gui/am-frag/gtk.am 2009-04-22 16:37:31 +0000
+++ b/gui/am-frag/gtk.am 2009-04-23 18:14:24 +0000
@@ -19,12 +19,10 @@
# Build the GTK gui
#
-# Build the optional GTK Widget, which currently only works with Cairo
+# Build the optional GTK Widget
if BUILD_GTK_WIDGET
-if BUILD_CAIRO_RENDERER
GTK_CANVAS = gtk_canvas.cpp gtk_canvas.h
endif
-endif
if BUILD_GTK_GUI
bin_PROGRAMS += gtk-gnash
@@ -47,7 +45,7 @@
if BUILD_AGG_RENDERER
gtk_gnash_CPPFLAGS += $(AGG_CFLAGS)
gtk_gnash_SOURCES += gtk_glue_agg.cpp gtk_glue_agg.h \
- gtk.cpp gtksup.h gtk_glue.h $(GTK_WIDGET)
+ gtk.cpp gtksup.h gtk_glue.h $(GTK_CANVAS)
gtk_gnash_LDADD = $(top_builddir)/backend/libgnashagg.la \
$(GNASH_LIBS) $(GTK_LIBS) $(AGG_LIBS) $(CAIRO_LIBS)
if HAVE_XV
=== modified file 'gui/gtk.cpp'
--- a/gui/gtk.cpp 2009-04-22 16:37:31 +0000
+++ b/gui/gtk.cpp 2009-04-23 18:14:24 +0000
@@ -177,7 +177,6 @@
#ifdef BUILD_CANVAS
_canvas = gnash_canvas_new();
gnash_canvas_setup(GNASH_CANVAS(_canvas), argc, argv);
- _renderer = gnash_canvas_get_renderer(GNASH_CANVAS(_canvas));
// Increase reference count to prevent its destruction (which could happen
// later if we remove it from its container).
g_object_ref(G_OBJECT(_canvas));
@@ -238,6 +237,14 @@
}
#endif
+#ifdef BUILD_CANVAS
+ _renderer = gnash_canvas_get_renderer(GNASH_CANVAS(_canvas));
+#else
+ _renderer = _glue->createRenderHandler();
+ if ( ! _renderer ) return false;
+ set_render_handler(_renderer);
+#endif
+
// The first time stop() was called, stopHook() might not have had a chance
// to do anything, because GTK+ wasn't garanteed to be initialised.
//if (isStopped()) stopHook();
=== modified file 'gui/gtk_canvas.cpp'
--- a/gui/gtk_canvas.cpp 2009-04-22 16:37:31 +0000
+++ b/gui/gtk_canvas.cpp 2009-04-23 18:14:24 +0000
@@ -60,6 +60,7 @@
static void gnash_canvas_size_allocate(GtkWidget *widget, GtkAllocation
*allocation);
static gboolean gnash_canvas_expose_event(GtkWidget *widget, GdkEventExpose
*event);
static gboolean gnash_canvas_configure_event(GtkWidget *widget,
GdkEventConfigure *event);
+static void gnash_canvas_realize(GtkWidget *widget);
GtkWidget *
gnash_canvas_new (void)
@@ -79,12 +80,17 @@
widget_class->size_allocate = gnash_canvas_size_allocate;
widget_class->expose_event = gnash_canvas_expose_event;
widget_class->configure_event = gnash_canvas_configure_event;
+ widget_class->configure_event = gnash_canvas_configure_event;
+ widget_class->realize = gnash_canvas_realize;
}
static void
gnash_canvas_init(GnashCanvas *canvas)
{
GNASH_REPORT_FUNCTION;
+
+ canvas->renderer = NULL;
+
gtk_widget_set_double_buffered(GTK_WIDGET(canvas), FALSE);
// If we don't set this flag we won't be able to grab focus
@@ -100,7 +106,9 @@
gnash::log_debug("gnash_canvas_size_allocate %d %d", allocation->width,
allocation->height);
- canvas->glue->setRenderHandlerSize(allocation->width, allocation->height);
+ if (canvas->renderer != NULL)
+ canvas->glue->setRenderHandlerSize(allocation->width,
allocation->height);
+
GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, allocation);
}
@@ -133,11 +141,51 @@
{
GNASH_REPORT_FUNCTION;
GnashCanvas *canvas = GNASH_CANVAS(widget);
+
canvas->glue->configure(widget, event);
return FALSE;
}
+static void
+gnash_canvas_realize(GtkWidget *widget)
+{
+ GNASH_REPORT_FUNCTION;
+ GnashCanvas *canvas = GNASH_CANVAS(widget);
+ GdkWindowAttr attributes;
+ gint attributes_mask;
+
+ GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.x = widget->allocation.x;
+ attributes.y = widget->allocation.y;
+ attributes.width = widget->allocation.width;
+ attributes.height = widget->allocation.height;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.visual = gtk_widget_get_visual (widget);
+ attributes.colormap = gtk_widget_get_colormap (widget);
+ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+
+ widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (widget->window, widget);
+
+#if defined(RENDERER_CAIRO) || defined(RENDERER_AGG)
+ // cairo needs the _drawingArea.window to prepare it ..
+ // TODO: find a way to make 'glue' use independent from actual renderer in
use
+ canvas->glue->prepDrawingArea(GTK_WIDGET(canvas));
+#endif
+
+ canvas->renderer = canvas->glue->createRenderHandler();
+ set_render_handler(canvas->renderer);
+
+ canvas->glue->setRenderHandlerSize(widget->allocation.width,
+ widget->allocation.height);
+}
+
void
gnash_canvas_setup(GnashCanvas *canvas, int argc, char **argv[])
{
@@ -174,15 +222,6 @@
// TODO: find a way to make '_glue' use independent from actual renderer
in use
canvas->glue->prepDrawingArea(canvas);
#endif
-
-#if defined(RENDERER_CAIRO) || defined(RENDERER_AGG)
- // cairo needs the _drawingArea.window to prepare it ..
- // TODO: find a way to make 'glue' use independent from actual renderer in
use
- canvas->glue->prepDrawingArea(GTK_WIDGET(canvas));
-#endif
-
- canvas->renderer = canvas->glue->createRenderHandler();
- set_render_handler(canvas->renderer);
}
void
=== modified file 'gui/pythonmod/gnash-view.cpp'
--- a/gui/pythonmod/gnash-view.cpp 2009-04-21 18:40:48 +0000
+++ b/gui/pythonmod/gnash-view.cpp 2009-04-23 18:14:24 +0000
@@ -18,7 +18,7 @@
//
#include "gnash-view.h"
-#include "gnash-canvas.h"
+#include "gtk_canvas.h"
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r10830: Add AGG support that works with the canvas in addition to the existing cairo support.,
rob <=