gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, openvg, updated. 168a0927aff5e90c2420


From: Rob Savoye
Subject: [Gnash-commit] [SCM] Gnash branch, openvg, updated. 168a0927aff5e90c242055e6bc5cdf657ff6c42b
Date: Mon, 20 Dec 2010 04:02:39 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, openvg has been updated
       via  168a0927aff5e90c242055e6bc5cdf657ff6c42b (commit)
       via  3acc0d23ee82206148af30005f603e48b6e0411f (commit)
       via  41cb100f6e81181dc6d409f70cfd5c5794963e18 (commit)
       via  bf738ffc6a2b136d234530df417be5663b74e3de (commit)
       via  17b2acfc617ee99e9c6f84aef9f5c3de86355417 (commit)
       via  09011232a27de140cafd72a4c2dd6ea79506204b (commit)
       via  b46727cc434fb8fd83ddcdd7b45a44b447ef9bf9 (commit)
       via  0b51dcc14b15a5a6d841b3fcd13fe5e1740a2c35 (commit)
       via  2d2487179564c7129496d09ba1f20859f598d5de (commit)
       via  02a8184a1cefdf4d314442c773414cea1f2d6947 (commit)
       via  d3763d961c6a16dc62bbe3ac5c78e7b36728924e (commit)
       via  719c29c3d22d6ef2ee1de2e14357f1cb5e43b738 (commit)
      from  94879a29f26dcd063d7f31a06ec947781fe321be (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=168a0927aff5e90c242055e6bc5cdf657ff6c42b


commit 168a0927aff5e90c242055e6bc5cdf657ff6c42b
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 21:02:23 2010 -0700

    remove unused device header files, this is now handled by the glue layer

diff --git a/librender/Renderer.h b/librender/Renderer.h
index d7c6d1b..052396f 100644
--- a/librender/Renderer.h
+++ b/librender/Renderer.h
@@ -155,17 +155,6 @@
 #include "log.h"
 #include "snappingrange.h"
 #include "SWFRect.h"
-#include "GnashDevice.h"
-
-#ifdef BUILD_EGL_DEVICE
-#include "egl/eglDevice.h"
-#endif
-#ifdef BUILD_DIRECTFB_DEVICE
-#include "directfb/DirectFBDevice.h"
-#endif
-#ifdef BUILD_X11_DEVICE
-#include "x11/X11Device.h"
-#endif
 
 // Forward declarations.
 namespace gnash {

http://git.savannah.gnu.org/cgit//commit/?id=3acc0d23ee82206148af30005f603e48b6e0411f


commit 3acc0d23ee82206148af30005f603e48b6e0411f
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 21:01:33 2010 -0700

    add newline at end of file

diff --git a/gui/Makefile.am b/gui/Makefile.am
index 0ff4f55..2e0a796 100644
--- a/gui/Makefile.am
+++ b/gui/Makefile.am
@@ -314,4 +314,5 @@ test_glue_CPPFLAGS = \
        $(DIRECTFB_CFLAGS)
 #       -DUSE_TESTSUITE
 test_glue_LDADD = $(GNASH_LIBS)
-endif
\ No newline at end of file
+endif
+

http://git.savannah.gnu.org/cgit//commit/?id=41cb100f6e81181dc6d409f70cfd5c5794963e18


commit 41cb100f6e81181dc6d409f70cfd5c5794963e18
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 21:00:47 2010 -0700

    Use OpenVG instead of AGG

diff --git a/gui/test_glue.cpp b/gui/test_glue.cpp
index 9b0ace4..759cd9c 100644
--- a/gui/test_glue.cpp
+++ b/gui/test_glue.cpp
@@ -27,6 +27,8 @@
 #include <vector>
 #include <sstream>
 #include <map>
+#include <signal.h>
+#include <unistd.h>
 #include <cassert>
 #include <regex.h>
 #include <boost/assign/list_of.hpp>
@@ -44,18 +46,31 @@
 #include "boost/date_time/posix_time/posix_time.hpp"
 
 #ifdef RENDERER_AGG
-# include "fb/fb_glue_agg.h"
-//# include "gtk/gtk_glue_agg.h"
-#endif
-#ifdef RENDERER_OPENGL
+# ifdef BUILD_RAWFB_DEVICE
+#  include "fb/fb_glue_agg.h"
+# endif
+# ifdef BUILD_X11_DEVICE
+#  include "gtk/gtk_glue_agg.h"
+# endif
 #endif
 #ifdef RENDERER_OPENVG
+# include "fb/fb_glue_ovg.h"
 #endif
+#if 0
 #ifdef RENDERER_GLES1
+# include "fb/fb_glue_gles1.h"
 #endif
 #ifdef RENDERER_GLES2
+# include "fb/fb_glue_gles2.h"
+#endif
+#ifdef RENDERER_OPENGL
+# ifdef BUILD_X11_DEVICE
+#  include "gtk/gtk_glue_gtkglext.h"
+# endif
 #endif
 #ifdef RENDERER_CAIRO
+# include "gtk/gtk_glue_cairo.h"
+#endif
 #endif
 
 TestState runtest;
@@ -66,6 +81,8 @@ using namespace gui;
 using namespace std;
 using namespace boost::posix_time;
 
+static void test_render(const std::string &gui, const std::string &render);
+
 // The debug log used by all the gnash libraries.
 static LogFile& dbglogfile = LogFile::getDefaultInstance();
 
@@ -154,72 +171,90 @@ main(int argc, char *argv[])
         0,
         {0, 0, 0}};
 
-    // We're not testing the virtual terminals here, so we just pass 0 as
-    // the file descriptor.
-    FBAggGlue fbag(0);
+    test_render("FB", "OpenVG");
+}
+
+static void
+test_render(const std::string &gui, const std::string &render)
+{
+    cout << "*** Testing the glue layer for " << gui
+         << " and " << render << "*** " << endl;
+
+    FBOvgGlue fbvg(0);
+
+    // if ((gui == "FB") && (render = "OpenVG")) {
+    //     // We're not testing the virtual terminals here, so we just pass 0 
as
+    //     // the file descriptor.
+    //     glue = FBAggGlue;
+    // }
 
     // Test the defaults. These need to properly handle an unitialized
-    // Renderer without segfaulting.
-    if (fbag.width() == 0) {
-        runtest.pass("FBAggGlue::width(0)");
+    // Glue without segfaulting.
+    if (fbvg.width() == 0) {
+        runtest.pass("FBOvgGlue::width(0)");
     } else {
-        runtest.fail("FBAggGlue::width(0)");
+        runtest.fail("FBOvgGlue::width(0)");
     }
     
-    if (fbag.height() == 0) {
-        runtest.pass("FBAggGlue::height(0)");
+    if (fbvg.height() == 0) {
+        runtest.pass("FBOvgGlue::height(0)");
     } else {
-        runtest.fail("FBAggGlue::height(0)");
-    }    
+        runtest.fail("FBOvgGlue::height(0)");
+    }
 
-    // These next two will display an error, because the renderer isn't
+    Renderer *renderer = fbvg.createRenderHandler();    
+    
+#if 0
+    // FIXME: this appears to be AGG specific
+    // These next two will display an error, because the glue isn't
     // set but we know that, we want to test if nothiung crashes when
     // unitilized.
     SWFRect bounds;
-    fbag.setInvalidatedRegion(bounds);
-    if (fbag.getBounds() == 0) {
-        runtest.pass("FBAggGlue::setInvalidatedRegion(0)");
+    fbvg.setInvalidatedRegion(bounds);
+    if (fbvg.getBounds() == 0) {
+        runtest.pass("FBOvgGlue::setInvalidatedRegion(0)");
     } else {
-        runtest.fail("FBAggGlue::setInvalidatedRegion(0)");
+        runtest.fail("FBOvgGlue::setInvalidatedRegion(0)");
     }    
-
+#endif
+    
     InvalidatedRanges ranges;
-    fbag.setInvalidatedRegions(ranges);
-    if (fbag.getBounds() == 0) {
-        runtest.pass("FBAggGlue::setInvalidatedRegions(0)");
+    fbvg.setInvalidatedRegions(ranges);
+    if (fbvg.getBounds() == 0) {
+        runtest.pass("FBOvgGlue::setInvalidatedRegions(0)");
     } else {
-        runtest.fail("FBAggGlue::setInvalidatedRegions(0)");
+        runtest.fail("FBOvgGlue::setInvalidatedRegions(0)");
     }    
 
 #if 0
-    fbag.prepDrawingArea(reinterpret_cast<void *>(fixinfo.smem_start));
-    if (fbag.getBounds() == 0) {
-        runtest.pass("FBAggGlue::setInvalidatedRegions(0)");
+    fbvg.prepDrawingArea(reinterpret_cast<void *>(fixinfo.smem_start));
+    if (fbvg.getBounds() == 0) {
+        runtest.pass("FBOvgGlue::setInvalidatedRegions(0)");
     } else {
-        runtest.fail("FBAggGlue::setInvalidatedRegions(0)");
+        runtest.fail("FBOvgGlue::setInvalidatedRegions(0)");
     }
 #endif
 
-    // This initlizes the device and renderer
-    if (fbag.init(argc, &argv)) {
-        runtest.pass("FBAggGlue::init()");
+    // This initlizes the device and glue
+    if (fbvg.init(0, 0)) {
+        runtest.pass("FBOvgGlue::init()");
     } else {
-        runtest.fail("FBAggGlue::init()");
+        runtest.fail("FBOvgGlue::init()");
     }
 
-    if (fbag.width() > 0) {
-        runtest.pass("FBAggGlue::width()");
+    if (fbvg.width() > 0) {
+        runtest.pass("FBOvgGlue::width()");
     } else {
-        runtest.fail("FBAggGlue::width()");
+        runtest.fail("FBOvgGlue::width()");
     }
     
-    if (fbag.height() > 0) {
-        runtest.pass("FBAggGlue::height()");
+    if (fbvg.height() > 0) {
+        runtest.pass("FBOvgGlue::height()");
     } else {
-        runtest.fail("FBAggGlue::height()");
+        runtest.fail("FBOvgGlue::height()");
     }
 
-    fbag.render();
+    fbvg.render();
 }
 
 #ifdef ENABLE_FAKE_FRAMEBUFFER

http://git.savannah.gnu.org/cgit//commit/?id=bf738ffc6a2b136d234530df417be5663b74e3de


commit bf738ffc6a2b136d234530df417be5663b74e3de
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 21:00:10 2010 -0700

    use Ovg instead of egl in file names

diff --git a/gui/gtk/gtk_canvas.cpp b/gui/gtk/gtk_canvas.cpp
index 915166e..9e0de9a 100644
--- a/gui/gtk/gtk_canvas.cpp
+++ b/gui/gtk/gtk_canvas.cpp
@@ -40,7 +40,7 @@
 #endif
 
 #ifdef RENDERER_OPENVG
-# include "gtk_glue_egl.h"
+# include "gtk_glue_ovg.h"
 #endif
 
 // Cairo support for rendering in the canvas.
@@ -240,6 +240,17 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
         // Global enable VA-API, if requested
         gnash::vaapi_set_is_enabled(hwaccel == "vaapi");
 #endif
+#ifdef RENDERER_OPENVG
+       // Use OpenVG, which uses EGL as the display API. This works with
+       // Mesa on desktop unix systems, and on ARM based devices running
+       // Linux, often with manufacturer provided SDKs.
+        if ((renderer == "openvg") || (renderer == "ovg")) {
+            canvas->glue.reset(new gnash::gui::GtkOvgGlue);
+            // Set the renderer to the next one to try if initializing
+            // fails.
+            next_renderer = "agg";
+        }
+#endif
         // Use the Cairo renderer. Cairo is also used by GTK2, so using
         // Cairo makes much sense. Unfortunately, our implementation seems
         // to have serious performance issues, although it does work.
@@ -266,17 +277,6 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
             // rendering performance issues.
         }
 #endif
-#ifdef RENDERER_OPENVG
-       // Use OpenVG, which uses EGL as the display API. This works with
-       // Mesa on desktop unix systems, and on ARM based devices running
-       // Linux, often with manufacturer provided SDKs.
-        if (renderer == "openvg") {
-            canvas->glue.reset(new gnash::GtkEGLGlue);
-            // Set the renderer to the next one to try if initializing
-            // fails.
-            next_renderer = "agg";
-        }
-#endif
         if (renderer == "agg") {
             // Use LibVva, which works on Nvidia, AT, or Intel 965 GPUs
             // with AGG or OpenGL.
@@ -292,16 +292,16 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
         {
             canvas->glue.reset(new gnash::GtkAggGlue);
         }
-#else // ndef RENDERER_AGG
-        boost::format fmt = boost::format("Support for renderer %1% "
-                "was not built") % renderer;
-        throw gnash::GnashException(fmt.str());
+#else // ifdef RENDERER_AGG
+            boost::format fmt = boost::format("Support for renderer %1% "
+                                              "was not built") % renderer;
+            throw gnash::GnashException(fmt.str());
 #endif
-                {
+            {
                 canvas->glue.reset(new gnash::GtkAggGlue);
             }
         }
-
+        
         // Initialize the canvas for rendering into
         initialized_renderer = canvas->glue->init(argc, argv);
         // If the renderer with the least dependencies fails, we can't
diff --git a/gui/gtk/gtk_glue.h b/gui/gtk/gtk_glue.h
index 8658651..6d833c3 100644
--- a/gui/gtk/gtk_glue.h
+++ b/gui/gtk/gtk_glue.h
@@ -28,6 +28,8 @@
 #include <gdk/gdk.h>
 #endif
 
+#include "DeviceGlue.h"
+
 namespace gnash {
     class Renderer;
     class movie_root;
@@ -35,7 +37,7 @@ namespace gnash {
 
 namespace gnash {
 
-class GtkGlue
+class GtkGlue : public DeviceGlue
 {
   public:
     GtkGlue() : _drawing_area(0) { }
diff --git a/gui/gtk/gtk_glue_agg.cpp b/gui/gtk/gtk_glue_agg.cpp
index 1a62b42..31f2660 100644
--- a/gui/gtk/gtk_glue_agg.cpp
+++ b/gui/gtk/gtk_glue_agg.cpp
@@ -42,6 +42,7 @@ GtkAggGlue::GtkAggGlue()
 :   _offscreenbuf(NULL),
     _agg_renderer(NULL)
 {
+    GNASH_REPORT_FUNCTION;
 }
 
 GtkAggGlue::~GtkAggGlue()
@@ -54,12 +55,14 @@ GtkAggGlue::~GtkAggGlue()
 bool
 GtkAggGlue::init(int /*argc*/, char ** /*argv*/[])
 {
+    GNASH_REPORT_FUNCTION;
     return true;
 }
 
 void
 GtkAggGlue::prepDrawingArea(GtkWidget *drawing_area)
 {
+    GNASH_REPORT_FUNCTION;
     _drawing_area = drawing_area;
 
     // Disable double buffering, otherwise gtk tries to update widget
@@ -70,6 +73,7 @@ GtkAggGlue::prepDrawingArea(GtkWidget *drawing_area)
 Renderer*
 GtkAggGlue::createRenderHandler()
 {
+    GNASH_REPORT_FUNCTION;
     GdkVisual* wvisual = gdk_drawable_get_visual(_drawing_area->window);
 
     GdkImage* tmpimage = gdk_image_new (GDK_IMAGE_FASTEST, wvisual, 1, 1);
@@ -100,6 +104,8 @@ GtkAggGlue::createRenderHandler()
 void
 GtkAggGlue::setRenderHandlerSize(int width, int height)
 {
+    GNASH_REPORT_FUNCTION;
+
     assert(width > 0);
     assert(height > 0);
     assert(_agg_renderer != NULL);

http://git.savannah.gnu.org/cgit//commit/?id=17b2acfc617ee99e9c6f84aef9f5c3de86355417


commit 17b2acfc617ee99e9c6f84aef9f5c3de86355417
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:59:26 2010 -0700

    add gtk/gtk_glue_ovg.* files for OpenVG with GTK support

diff --git a/gui/gtk/gtk.am b/gui/gtk/gtk.am
index f9ce9cf..3e256a5 100644
--- a/gui/gtk/gtk.am
+++ b/gui/gtk/gtk.am
@@ -65,7 +65,7 @@ endif # BUILD_AGG_RENDERER
 
 if BUILD_OVG_RENDERER
 gtk_gnash_CPPFLAGS += $(OPENVG_CFLAGS) $(EGL_CFLAGS)
-gtk_gnash_SOURCES += gtk/gtk_glue_egl.cpp gtk/gtk_glue_egl.h 
+gtk_gnash_SOURCES += gtk/gtk_glue_ovg.cpp gtk/gtk_glue_ovg.h 
 gtk_gnash_LDADD += \
        $(OPENVG_LIBS) \
        $(EGL_LIBS)

http://git.savannah.gnu.org/cgit//commit/?id=09011232a27de140cafd72a4c2dd6ea79506204b


commit 09011232a27de140cafd72a4c2dd6ea79506204b
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:58:08 2010 -0700

    add new DeviceGlue.h file

diff --git a/libdevice/Makefile.am b/libdevice/Makefile.am
index fa34d0f..5d8ef64 100644
--- a/libdevice/Makefile.am
+++ b/libdevice/Makefile.am
@@ -62,6 +62,7 @@ instdir = $(includedir)/gnash
 
 noinst_HEADERS = \
        GnashDevice.h \
+       DeviceGlue.h \
        $(NULL)
 
 pkglib_LTLIBRARIES =  libgnashdevice.la

http://git.savannah.gnu.org/cgit//commit/?id=b46727cc434fb8fd83ddcdd7b45a44b447ef9bf9


commit b46727cc434fb8fd83ddcdd7b45a44b447ef9bf9
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:57:14 2010 -0700

    look for Freescale Babbage board device names for input events

diff --git a/libdevice/events/EventDevice.cpp b/libdevice/events/EventDevice.cpp
index 4374cb4..3194a54 100644
--- a/libdevice/events/EventDevice.cpp
+++ b/libdevice/events/EventDevice.cpp
@@ -33,6 +33,9 @@ namespace gnash {
 
 static const char *INPUT_DEVICE = "/dev/input/event0";
 
+// The debug log used by all the gnash libraries.
+static LogFile& dbglogfile = LogFile::getDefaultInstance();
+
 EventDevice::EventDevice()
 {
     // GNASH_REPORT_FUNCTION;
@@ -50,6 +53,7 @@ bool
 EventDevice::init(const std::string &filespec, size_t /* size */)
 {
     GNASH_REPORT_FUNCTION;
+    dbglogfile.setVerbosity();
     
     _filespec = filespec;
     
@@ -74,9 +78,11 @@ EventDevice::init(const std::string &filespec, size_t /* 
size */)
     if (ioctl(_fd, EVIOCGVERSION, &version)) {
         perror("evdev ioctl");
     }
+#if 0
     log_debug("evdev driver version is %d.%d.%d",
               version >> 16, (version >> 8) & 0xff,
               version & 0xff);
+#endif
     
     if(ioctl(_fd, EVIOCGID, &_device_info)) {
         perror("evdev ioctl");
@@ -87,7 +93,11 @@ EventDevice::init(const std::string &filespec, size_t /* 
size */)
         perror("evdev ioctl");
     }
     log_debug("The device on %s says its name is %s", filespec, name);
-    
+    // /dev/mxc_ts is the Touchscreen driver used by the Freescale Babbage 
board
+    // For some reason it has an empty device info structure other than the 
name.
+    if (strstr(name, "mxc_ts") != 0) {
+        _device_info.bustype = BUS_HOST;
+    }
     log_debug("vendor %04hx product %04hx version %04hx",
               _device_info.vendor, _device_info.product,
               _device_info.version);
@@ -167,7 +177,14 @@ EventDevice::init(const std::string &filespec, size_t /* 
size */)
           break;
       case BUS_HOST:
           log_debug("is Host bus type");
-          _type = InputDevice::POWERBUTTON;
+          // ON the Babbage board, this is the evdev driver version 1.0.0 
+          if (strstr(name, "mxc_ts") != 0) {
+              log_debug("Babbage Touchscreen found!");
+              _type = InputDevice::TOUCHSCREEN;
+          }
+          if (strstr(name, "mxckpd") != 0) {
+              _type = InputDevice::POWERBUTTON;
+          }
           break;
       case BUS_GSC:
           log_unimpl("is a GSC bus type");

http://git.savannah.gnu.org/cgit//commit/?id=0b51dcc14b15a5a6d841b3fcd13fe5e1740a2c35


commit 0b51dcc14b15a5a6d841b3fcd13fe5e1740a2c35
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:55:49 2010 -0700

    return the window, not the root display

diff --git a/libdevice/x11/X11Device.h b/libdevice/x11/X11Device.h
index 527d944..6e24159 100644
--- a/libdevice/x11/X11Device.h
+++ b/libdevice/x11/X11Device.h
@@ -92,7 +92,7 @@ class X11Device : public GnashDevice
     // Using X11 always means a native renderer
     bool isNativeRender() { return true; }
 
-    Window getDrawableWindow() { return _root; };
+    Window getDrawableWindow() { return _window; };
     
     //
     // Testing Support

http://git.savannah.gnu.org/cgit//commit/?id=2d2487179564c7129496d09ba1f20859f598d5de


commit 2d2487179564c7129496d09ba1f20859f598d5de
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:54:56 2010 -0700

    OpenVG glue for GTK. This requires libMesa

diff --git a/gui/gtk/gtk_glue_ovg.cpp b/gui/gtk/gtk_glue_ovg.cpp
new file mode 100644
index 0000000..91135ef
--- /dev/null
+++ b/gui/gtk/gtk_glue_ovg.cpp
@@ -0,0 +1,408 @@
+//
+//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+//   Foundation, Inc
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <cerrno>
+#include <exception>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+
+#include "log.h"
+#include "RunResources.h"
+#include "Renderer.h"
+#include "GnashException.h"
+
+#ifdef HAVE_VG_OPENVG_H
+# include "openvg/Renderer_ovg.h"
+# include <VG/openvg.h>
+#endif
+
+#ifdef HAVE_EGL_EGL_H
+# include <EGL/egl.h>
+#else
+# error "This file needs EGL, which is part of OpenGL-ES"
+#endif
+
+#include "gtk_glue_ovg.h"
+
+namespace gnash {
+
+namespace gui {
+
+GtkOvgGlue::GtkOvgGlue()
+:   _offscreenbuf(0),
+    _bpp(32),
+    _width(0),
+    _height(0)
+{
+    GNASH_REPORT_FUNCTION;
+}
+
+GtkOvgGlue::~GtkOvgGlue()
+{
+    GNASH_REPORT_FUNCTION;
+
+#ifdef ENABLE_EGL_OFFSCREEN
+    if (_offscreenbuf) {
+        gdk_image_destroy(_offscreenbuf);
+    }
+#endif    
+
+}
+
+bool
+GtkOvgGlue::init(int /*argc*/, char ** /*argv*/[])
+{
+    GNASH_REPORT_FUNCTION;
+    
+    bool egl = false;
+    bool rawfb = false;
+    bool dfb = false;
+    bool x11 = false;
+    
+    // Probe to see what display devices we have that could be used.
+    boost::shared_array<renderer::GnashDevice::dtype_t> devs = probeDevices();
+    if (devs) {
+        int i = 0;
+        while (devs[i] != renderer::GnashDevice::NODEV) {
+            switch (devs[i++]) {
+              case renderer::GnashDevice::EGL:
+                  log_debug("Probing found an EGL display device");
+                  egl = true;
+                  break;
+              case renderer::GnashDevice::RAWFB:
+                  log_debug("Probing found a raw Framebuffer display device");
+                  rawfb = true;
+                  break;
+              case renderer::GnashDevice::X11:
+                  log_debug("Probing found an X11 display device");
+                  x11 = true;
+                  break;
+              case renderer::GnashDevice::DIRECTFB:
+                  log_debug("Probing found a DirectFB display device");
+                  dfb = true;
+                  break;
+              case renderer::GnashDevice::NODEV:
+              default:
+                  log_error("No display devices found by probing!");
+                  break;
+            }
+        }
+
+        // Now that we know what exists, we have to decide which one to
+        // use, as OpenVG can work with anything. We can only have one
+        // display device operating at a time.
+        if (egl) {
+            setDevice(renderer::GnashDevice::EGL);
+        } else if (rawfb) {
+            setDevice(renderer::GnashDevice::RAWFB);
+        } else if (dfb) {
+            setDevice(renderer::GnashDevice::DIRECTFB);
+        } else if (x11) {
+            setDevice(renderer::GnashDevice::X11);
+        }        
+    }
+
+    // Initialize the display device
+    _device->initDevice(0, 0);
+
+    return true;
+}
+
+void
+GtkOvgGlue::prepDrawingArea(GtkWidget *drawing_area)
+{
+    GNASH_REPORT_FUNCTION;
+
+    _drawing_area = drawing_area;
+    
+    // Disable double buffering, otherwise gtk tries to update widget
+    // contents from its internal offscreen buffer at the end of expose event
+    gtk_widget_set_double_buffered(_drawing_area, FALSE);
+
+    // DUMP_CURRENT_SURFACE;
+    // DUMP_CURRENT_CONTEXT;
+}
+
+Renderer*
+GtkOvgGlue::createRenderHandler()
+{
+    GNASH_REPORT_FUNCTION;
+
+    if (!_drawing_area) {
+        log_error("No area to draw in!");
+        return 0;
+    }
+    
+    GdkVisual* wvisual = gdk_drawable_get_visual(_drawing_area->window);
+    GdkImage* tmpimage = gdk_image_new (GDK_IMAGE_FASTEST, wvisual, 1, 1);
+    const GdkVisual* visual = tmpimage->visual;
+
+    // FIXME: we use bpp instead of depth, because depth doesn't appear to
+    // include the padding byte(s) the GdkImage actually has.
+    const char *pixelformat = 0;
+    // agg_detect_pixel_format(visual->red_shift, visual->red_prec,
+    // visual->green_shift, visual->green_prec, visual->blue_shift, 
visual->blue_prec,
+    // tmpimage->bpp * 8);
+
+    gdk_image_destroy(tmpimage);
+
+    _renderer.reset(reinterpret_cast<renderer::openvg::Renderer_ovg *>
+                    (renderer::openvg::create_handler(pixelformat)));
+    if (!_renderer) {
+        boost::format fmt = boost::format(
+            _("Could not create OPENVG renderer with pixelformat %s")
+            ) % pixelformat;
+        throw GnashException(fmt.str());
+    }
+
+    return reinterpret_cast<Renderer *>(_renderer.get());
+}
+
+void
+GtkOvgGlue::setRenderHandlerSize(int width, int height)
+{
+    GNASH_REPORT_FUNCTION;
+
+    assert(width > 0);
+    assert(height > 0);
+    assert(_renderer != NULL);
+    
+#ifdef ENABLE_EGL_OFFSCREEN
+    if (_offscreenbuf && _offscreenbuf->width == width &&
+        _offscreenbuf->height == height) {
+        return; 
+    }
+
+    if (_offscreenbuf) {
+        gdk_image_destroy(_offscreenbuf);
+    }
+
+    GdkVisual* visual = gdk_drawable_get_visual(_drawing_area->window);
+    _offscreenbuf = gdk_image_new (GDK_IMAGE_FASTEST, visual, width,
+                                   height);
+#endif
+    
+    // Attach the window to the low level device
+    long xid = GDK_WINDOW_XID(gtk_widget_get_window(_drawing_area));
+    _device->attachWindow(static_cast<renderer::GnashDevice::native_window_t>
+                          (xid));
+
+    // EGL needs to be bound to the type of client. The possible
+    // clients are OpenVG, OpenGLES1, and OpenGLES2.
+    if (_device->getType() == renderer::GnashDevice::EGL) {
+        renderer::EGLDevice *egl = (renderer::EGLDevice*)_device.get();
+        egl->bindClient(renderer::GnashDevice::OPENVG);
+    }
+    
+    // Allow drawing everywhere by default
+    InvalidatedRanges ranges;
+    ranges.setWorld();
+    _renderer->set_invalidated_regions(ranges);    
+}
+
+void 
+GtkOvgGlue::beforeRendering()
+{
+    GNASH_REPORT_FUNCTION;
+
+#ifdef ENABLE_EGL_OFFSCREEN
+    if (_offscreenbuf && _offscreenbuf->type == GDK_IMAGE_SHARED) {
+         gdk_flush();
+    }
+#endif
+}
+
+void
+GtkOvgGlue::render()
+{
+    GNASH_REPORT_FUNCTION;
+
+#if 0
+    // clear the color buffer
+    glClearColor(1.0, 1.0, 0.0, 1.0);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glFlush();
+#endif
+
+#ifdef ENABLE_EGL_OFFSCREEN
+    if ( _drawbounds.size() == 0 ) {
+        return; // nothing to do
+    }
+
+    if (!_offscreenbuf) {
+        log_error("No off screen buffer!");
+        return;
+    }
+    
+    render(0, 0, _offscreenbuf->width, _offscreenbuf->height);
+#else
+    render(0, 0, _width, _height);
+#endif
+}
+
+void
+GtkOvgGlue::render(int minx, int miny, int maxx, int maxy)
+{
+    GNASH_REPORT_FUNCTION;
+
+#ifdef ENABLE_EGL_OFFSCREEN
+    if (!_offscreenbuf) {
+        log_error("No off screen buffer!");
+        return;
+    }
+    
+    const int& x = minx;
+    const int& y = miny;
+    size_t width = std::min(_offscreenbuf->width, maxx - minx);
+    size_t height = std::min(_offscreenbuf->height, maxy - miny);
+    
+    GdkGC* gc = gdk_gc_new(_drawing_area->window);
+    
+    gdk_draw_image(_drawing_area->window, gc, _offscreenbuf, x, y, x, y, width,
+                   height);
+    gdk_gc_unref(gc);
+#else
+//    eglSwapBuffers(_eglDisplay, _eglSurface);
+#endif
+}
+
+void
+GtkOvgGlue::configure(GtkWidget *const /*widget*/, GdkEventConfigure *const 
event)
+{
+    GNASH_REPORT_FUNCTION;
+
+    setRenderHandlerSize(event->width, event->height);
+    
+    vgLoadIdentity();
+}
+
+#if 0
+bool
+GtkOvgGlue::checkEGLConfig(EGLConfig config)
+{
+    // GNASH_REPORT_FUNCTION;
+    
+    // Use this to explicitly check that the EGL config has the expected color 
depths
+    EGLint value;
+    if (_bpp == 32) {            
+        eglGetConfigAttrib(_eglDisplay, config, EGL_RED_SIZE, &value);
+        if (8 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_GREEN_SIZE, &value);
+        if (8 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_BLUE_SIZE, &value);
+        if (8 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_ALPHA_SIZE, &value);
+        if (8 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_SAMPLES, &value);
+        if (0 != value) {
+            return false;
+        }
+    } else if (_bpp == 16) {
+        eglGetConfigAttrib(_eglDisplay, config, EGL_RED_SIZE, &value);
+        if ( 5 != value ) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_GREEN_SIZE, &value);
+        if (6 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_BLUE_SIZE, &value);
+        if (5 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_ALPHA_SIZE, &value);
+        if (0 != value) {
+            return false;
+        }
+        eglGetConfigAttrib(_eglDisplay, config, EGL_SAMPLES, &value);
+#ifdef  RENDERER_GLES            
+        if (4 != value) {
+            return false;
+        }
+#endif
+#ifdef  RENDERER_OPENVG
+        if (0 != value) {
+            return false;
+            }
+#endif
+    } else {
+        return false;
+    }
+
+    return true;
+}
+
+/// Query the system for all supported configs
+int
+GtkOvgGlue::queryEGLConfig(EGLDisplay display)
+{
+     GNASH_REPORT_FUNCTION;
+     EGLConfig *configs = 0;
+     EGLint max_num_config = 0;
+
+     // Get the number of supported configurations
+     if ( EGL_FALSE == eglGetConfigs(display, 0, 0, &max_num_config) ) {
+         log_error("eglGetConfigs() failed to retrive the number of configs 
(error %s)",
+                   getErrorString(eglGetError()));
+         return 0;
+     }
+     if(max_num_config <= 0) {
+         printf( "No EGLconfigs found\n" );
+         return 0;
+     }
+     log_debug("Max number of EGL Configs is %d", max_num_config);     
+     
+     configs = new EGLConfig[max_num_config];
+     if (0 == configs) {
+         log_error( "Out of memory\n" );
+         return 0;
+     }
+
+     if ( EGL_FALSE == eglGetConfigs(display, configs, max_num_config, 
&max_num_config)) {
+         log_error("eglGetConfigs() failed to retrive the configs (error %s)",
+                   getErrorString(eglGetError()));
+         return 0;
+     }
+     for (int i=0; i<max_num_config; i++ ) {
+         log_debug("Config[%d] is:", i);
+         printEGLConfig(configs[i]);
+     }
+
+     return max_num_config;
+}
+#endif
+
+} // namespace gui
+} // namespace gnash
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: nil
+// End:
diff --git a/gui/gtk/gtk_glue_ovg.h b/gui/gtk/gtk_glue_ovg.h
new file mode 100644
index 0000000..6e4c4f2
--- /dev/null
+++ b/gui/gtk/gtk_glue_ovg.h
@@ -0,0 +1,87 @@
+//
+//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+//   Foundation, Inc
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include "gtk_glue.h"
+
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include <boost/scoped_array.hpp>
+#include <boost/scoped_ptr.hpp>
+#include "openvg/Renderer_ovg.h"
+
+#ifdef HAVE_VG_OPENVG_H
+#include <VG/openvg.h>
+#endif
+
+#ifdef HAVE_EGL_EGL_H
+# include <EGL/egl.h>
+#else
+# error "This file needs EGL, which is part of OpenGL-ES"
+#endif
+
+namespace gnash {
+
+namespace gui {
+
+class GtkOvgGlue : public GtkGlue
+{
+  public:
+    GtkOvgGlue();
+    ~GtkOvgGlue();
+
+    // Initialize EGL
+    bool init(int argc, char **argv[]);
+
+    // Prepare the drawing area
+    void prepDrawingArea(GtkWidget *drawing_area);
+
+    // Create the renderer
+    Renderer* createRenderHandler();
+
+    // Set the size of the rendering window
+    void setRenderHandlerSize(int width, int height);
+    void beforeRendering();
+
+    void configure(GtkWidget *const widget, GdkEventConfigure *const event);
+
+    // Render the drawing area to the display
+    void render();
+    void render(int minx, int miny, int maxx, int maxy);
+
+  private:
+    // offscreenbuf is only used with ENABLE_EGL_OFFSCREEN
+    GdkImage            *_offscreenbuf;
+    unsigned int        _bpp;
+    unsigned int        _width;
+    unsigned int        _height;
+
+    boost::shared_ptr<renderer::openvg::Renderer_ovg>  _renderer;    
+};
+
+} // namespace gui
+} // namespace gnash
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: nil
+// End:

http://git.savannah.gnu.org/cgit//commit/?id=02a8184a1cefdf4d314442c773414cea1f2d6947


commit 02a8184a1cefdf4d314442c773414cea1f2d6947
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:53:54 2010 -0700

    Add OpenVG support. Move device handling code to DeviceGlue for use by GUIs

diff --git a/gui/fb/fb.cpp b/gui/fb/fb.cpp
index cf7dba5..5b717c9 100644
--- a/gui/fb/fb.cpp
+++ b/gui/fb/fb.cpp
@@ -113,21 +113,21 @@
 #include <events/InputDevice.h>
 
 #ifdef RENDERER_AGG
-#include "fb_glue_agg.h"
+# include "fb_glue_agg.h"
 #endif
 
-#if 0
 #ifdef RENDERER_OPENVG
-#include "fb_glue_ovg.h"
+# include "fb_glue_ovg.h"
 #endif
 
+#if 0
 // FIXME: this is just to remind us to implement these too
 #ifdef RENDERER_GLES1
-#include "fb_glue_gles1.h"
+# include "fb_glue_gles1.h"
 #endif
 
 #ifdef RENDERER_GLES2
-#include "fb_glue_gles2.h"
+# include "fb_glue_gles2.h"
 #endif
 #endif
 
@@ -241,8 +241,7 @@ FBGui::init(int argc, char *** argv)
     if (renderer == "agg") {
         _glue.reset(new FBAggGlue());
     } else if (renderer == "openvg") {
-        //     _glue.reset(new FBOvgGlue);
-        log_error("No renderer! %s not supported.", renderer);
+        _glue.reset(new FBOvgGlue(0));
     } else {
         log_error("No renderer! %s not supported.", renderer);
     }
@@ -413,11 +412,12 @@ void
 FBGui::setInvalidatedRegions(const InvalidatedRanges& ranges)
  {
      // GNASH_REPORT_FUNCTION;
-     
-     FBAggGlue *fbag = reinterpret_cast
-        <FBAggGlue *>(_glue.get());
 
+#if 0
+     FBAggGlue *fbag = reinterpret_cast<FBAggGlue *>(_glue.get());
      fbag->setInvalidatedRegions(ranges);
+#endif
+     _glue->setInvalidatedRegions(ranges);     
 }
 
 char *
diff --git a/gui/fb/fb_glue.h b/gui/fb/fb_glue.h
index 5fdc2b7..8b9067f 100644
--- a/gui/fb/fb_glue.h
+++ b/gui/fb/fb_glue.h
@@ -21,8 +21,23 @@
 
 #include <cassert>
 
+#include "GnashDevice.h"
+#include "DeviceGlue.h"
+
+#ifdef BUILD_EGL_DEVICE
+#include "egl/eglDevice.h"
+#endif
+#ifdef BUILD_RAWFB_DEVICE
+#include "rawfb/RawFBDevice.h"
+#endif
+#ifdef BUILD_DIRECTFB_DEVICE
+#include "directfb/DirectFBDevice.h"
+#endif
+#ifdef BUILD_X11_DEVICE
+#include "x11/X11Device.h"
+#endif
+
 namespace gnash {
-    class Renderer;
     class movie_root;
 }
 
@@ -32,7 +47,7 @@ namespace gui {
     
 typedef void FbWidget;
   
-class FBGlue
+class FBGlue : public DeviceGlue
 {
 public:
     FBGlue();
@@ -43,6 +58,8 @@ public:
     virtual void prepDrawingArea(FbWidget *drawing_area) = 0;
     virtual Renderer* createRenderHandler() = 0;
     virtual void setRenderHandlerSize(int /*width*/, int /*height*/) {}
+    virtual void setInvalidatedRegions(const InvalidatedRanges &ranges) {};
+    
     virtual void render() = 0;
     
     virtual int width() = 0;
@@ -52,96 +69,13 @@ public:
 
     virtual void beforeRendering(movie_root *) {};
 
-    boost::shared_array<renderer::GnashDevice::dtype_t> probeDevices() {
-        GNASH_REPORT_FUNCTION;
-        
-        size_t total = 0;
-#ifdef BUILD_EGL_DEVICE
-        total++;
-#endif
-#ifdef BUILD_RAWFB_DEVICE
-        total++;
-#endif
-#ifdef BUILD_DIRECTFB_DEVICE
-        total++;
-#endif
-#ifdef BUILD_X11_DEVICE
-        total++;
-#endif
-        boost::shared_array<renderer::GnashDevice::dtype_t> devs
-            (new renderer::GnashDevice::dtype_t[total]);
-#ifdef BUILD_X11_DEVICE
-        devs[--total] = renderer::GnashDevice::X11;
-#endif
-#ifdef BUILD_EGL_DEVICE
-        devs[--total] = renderer::GnashDevice::EGL;
-#endif
-#ifdef BUILD_RAWFB_DEVICE
-        devs[--total] = renderer::GnashDevice::RAWFB;
-#endif
-#ifdef BUILD_DIRECTFB_DEVICE
-        devs[--total] = renderer::GnashDevice::DIRECTFB;
-#endif
-        
-        return devs;
-    }
-
-    void resetDevice() { _device.reset(); };
-    
-    renderer::GnashDevice::dtype_t getDevice()
-    {
-        if (_device) {
-            return _device->getType();
-        }
-        return renderer::GnashDevice::NODEV;
-    }
-    
-    void setDevice(renderer::GnashDevice::dtype_t dtype) {
-        switch (dtype) {
-#ifdef BUILD_EGL_DEVICE
-          case renderer::GnashDevice::EGL:
-          {
-              _device.reset(new renderer::EGLDevice);
-              break;
-          }
-#endif
-#ifdef BUILD_RAWFB_DEVICE_XX
-          case renderer::GnashDevice::RAWFB:
-          {
-              _device.reset(new renderer::rawfb::RawFBDevice);
-              break;
-          }
-#endif
-#ifdef BUILD_DIRECTFB_DEVICE
-          case renderer::GnashDevice::DIRECTFB:
-          {
-              _device.reset(new renderer::directfb::DirectFBDevice);
-              break;
-          }
-#endif
-#ifdef BUILD_X11_DEVICE
-          case renderer::GnashDevice::X11:
-          {
-              _device.reset(new renderer::x11::X11Device);
-              break;
-          }
-#endif
-          default:
-              log_error("unsupported Display Device!");
-        }
-        // // EGL doesn't care about command line argument, so pass NULL
-        // _device->initDevice(0, 0);
-        // renderer::EGLDevice *egl = (renderer::EGLDevice*)_device.get();
-        // egl->printEGLConfig();
-        // egl->printEGLSurface();
-    }
-
     size_t getWidth()  { return (_device) ? _device->getWidth() : 0; };
     size_t getHeight() { return (_device) ? _device->getWidth() : 0; };
     size_t getDepth()  { return (_device) ? _device->getDepth() : 0; };
     
 protected:
-    boost::scoped_ptr<renderer::GnashDevice> _device;    
+    boost::scoped_ptr<renderer::GnashDevice> _device;
+    boost::scoped_ptr<Renderer> _renderer;
 };
 
 } // end of namespace gui
diff --git a/gui/fb/fb_glue_ovg.cpp b/gui/fb/fb_glue_ovg.cpp
index 4739b4a..0794f49 100644
--- a/gui/fb/fb_glue_ovg.cpp
+++ b/gui/fb/fb_glue_ovg.cpp
@@ -20,8 +20,130 @@
 #include "gnashconfig.h"
 #endif
 
+#include "log.h"
+#include "fb_glue_ovg.h"
+#include "GnashDevice.h"
+
 namespace gnash {
+
+namespace gui {
+
+FBOvgGlue::FBOvgGlue(int fd)
+    : _stride(0)
+{
+    GNASH_REPORT_FUNCTION;
+}
+
+FBOvgGlue::~FBOvgGlue()
+{
+    GNASH_REPORT_FUNCTION;
+}
+
+bool
+FBOvgGlue::init(int /* argc */, char **/*argv*/[])
+{
+    GNASH_REPORT_FUNCTION;
+
+    bool egl = false;
+    bool rawfb = false;
+    bool dfb = false;
+    bool x11 = false;
+    
+    // Probe to see what display devices we have that could be used.
+    boost::shared_array<renderer::GnashDevice::dtype_t> devs = probeDevices();
+    if (devs) {
+        int i = 0;
+        while (devs[i] != renderer::GnashDevice::NODEV) {
+            switch (devs[i++]) {
+              case renderer::GnashDevice::EGL:
+                  log_debug("Probing found an EGL display device");
+                  egl = true;
+                  break;
+              case renderer::GnashDevice::RAWFB:
+                  log_debug("Probing found a raw Framebuffer display device");
+                  rawfb = true;
+                  break;
+              case renderer::GnashDevice::X11:
+                  log_debug("Probing found an X11 display device");
+                  x11 = true;
+                  break;
+              case renderer::GnashDevice::DIRECTFB:
+                  log_debug("Probing found a DirectFB display device");
+                  dfb = true;
+                  break;
+              case renderer::GnashDevice::NODEV:
+              default:
+                  log_error("No display devices found by probing!");
+                  break;
+            }
+        }
+
+        // Now that we know what exists, we have to decide which one to
+        // use, as OpenVG can work with anything. We can only have one
+        // display device operating at a time.
+        if (egl) {
+            setDevice(renderer::GnashDevice::EGL);
+        } else if (rawfb) {
+            setDevice(renderer::GnashDevice::RAWFB);
+        } else if (dfb) {
+            setDevice(renderer::GnashDevice::DIRECTFB);
+        } else if (x11) {
+            setDevice(renderer::GnashDevice::X11);
+        }        
+    }
+
+    // Initialize the display device
+    return _device->initDevice(0, 0);
+}
+
+
+Renderer*
+FBOvgGlue::createRenderHandler()
+{
+    GNASH_REPORT_FUNCTION;
+
+    // Create the renderer
+    _renderer.reset(renderer::openvg::create_handler(0));
+
+    // Print the ID tag
+    if (!_renderer->description().empty()) {
+        log_debug("Renderer is: %s", _renderer->description());
+    }
+    
+    return _renderer.get();
+}
+
+/// Not implemented, Fixme
+void
+FBOvgGlue::setInvalidatedRegions(const InvalidatedRanges& ranges)
+{
+    // GNASH_REPORT_FUNCTION;
+    // if (_renderer) {
+    //     _renderer->setInvalidatedRegions(ranges);
+    // }
+}
+
+void
+FBOvgGlue::prepDrawingArea(void *drawing_area)
+{
+    GNASH_REPORT_FUNCTION;
+
+    _device->attachWindow(reinterpret_cast
+            <renderer::GnashDevice::native_window_t>(drawing_area));
     
+    // if (_bpp == 16) {
+    // }       
+}
+
+void
+FBOvgGlue::render()
+{
+    GNASH_REPORT_FUNCTION;
+
+    // SwapBuffer();
+}
+
+} // end of namespace gui
 } // end of namespace gnash
     
 // Local Variables:
diff --git a/gui/fb/fb_glue_ovg.h b/gui/fb/fb_glue_ovg.h
index 2a5c992..79fbd94 100644
--- a/gui/fb/fb_glue_ovg.h
+++ b/gui/fb/fb_glue_ovg.h
@@ -24,8 +24,9 @@
 #endif
 
 #include <boost/cstdint.hpp>
-
+#include "openvg/Renderer_ovg.h"
 #include "fbsup.h"
+#include "fb_glue.h"
 
 #ifdef HAVE_VG_OPENVG_H
 #include <VG/openvg.h>
@@ -33,37 +34,59 @@
 
 namespace gnash {
 
+namespace gui {
+
 class render_handler;
 
 class FBOvgGlue : public FBGlue
 {
+    
 public:
     FBOvgGlue(int fd);
-    FBOvgGlue(int x, int y, int width, int height);
+//    FBOvgGlue(int x, int y, int width, int height);
     ~FBOvgGlue();
     
-    virtual bool init(int argc, char ***argv);
-    virtual void render();
+    bool init(int argc, char ***argv);
+    void render();
     
     // resize(int width, int height);
     void draw();
-    // Renderer* createRenderHandler();
+    Renderer* createRenderHandler();
+    void setInvalidatedRegions(const InvalidatedRanges &ranges);
+    
+    /// \brief
+    ///  Hand off a handle to the native drawing area to the renderer
+    void prepDrawingArea(void *drawing_area);
+    
     void initBuffer(int width, int height);
     void resize(int width, int height);
     // void render(geometry::Range2d<int>& bounds);
+
+    /// \brief
+    ///  The Width of the drawing area, in pixels. For framebuffer
+    ///  based devices, this is the size of the display screen.
+    int width() { return (_device) ? _device->getWidth() : 0; };
+    
+    /// Height of the drawing area, in pixels. For framebuffer
+    ///  based devices, this is the size of the display screen.
+    int height() { return (_device) ? _device->getHeight() : 0; };
+
+    // these are used only for debugging purpose to access private data
+    size_t getBounds() { return _drawbounds.size(); };
+    // size_t getMemSize() { return _fixinfo.smem_len; };    
     
 private:
-    int         _width;
-    int         _height;
     int         _stride;
-    boost::uint8_t *_offscreenbuf;
-    // Renderer *_renderer;
+    boost::uint8_t *_offscreenbuf; // FIXME: I think this should go away
     
     //Rectangle _bounds;
-    geometry::Range2d<int> _drawbounds;
+    std::vector< geometry::Range2d<int> > _drawbounds;
     geometry::Range2d<int> _validbounds;
+
+//    boost::scoped_ptr<Renderer> _renderer;
 };
-    
+
+} // end of namespace gui
 } // end of namespace gnash
 
 #endif  // end of FB_GLUE_OVG_H

http://git.savannah.gnu.org/cgit//commit/?id=d3763d961c6a16dc62bbe3ac5c78e7b36728924e


commit d3763d961c6a16dc62bbe3ac5c78e7b36728924e
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 20:52:35 2010 -0700

    base class for other classes that need to handle deisplay devices.

diff --git a/libdevice/DeviceGlue.h b/libdevice/DeviceGlue.h
new file mode 100644
index 0000000..33a5def
--- /dev/null
+++ b/libdevice/DeviceGlue.h
@@ -0,0 +1,151 @@
+//
+//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+//   Foundation, Inc
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef __DEVICE_GLUE_H__
+#define __DEVICE_GLUE_H__ 1
+
+#ifdef HAVE_CONFIG_H
+#include "gnashconfig.h"
+#endif
+
+#include <boost/scoped_array.hpp>
+#include <boost/shared_array.hpp>
+
+#include "GnashDevice.h"
+
+#ifdef BUILD_EGL_DEVICE
+#include "egl/eglDevice.h"
+#endif
+#ifdef BUILD_RAWFB_DEVICE
+#include "rawfb/RawFBDevice.h"
+#endif
+#ifdef BUILD_DIRECTFB_DEVICE
+#include "directfb/DirectFBDevice.h"
+#endif
+#ifdef BUILD_X11_DEVICE
+#include "x11/X11Device.h"
+#endif
+
+/// @note This file is a simple base class for any GUI glue layer code
+/// That needs to use libdevice devices. Currently this is used by both
+/// the GTK and Framebufffer GUIs for OpenVG, OpenGLES1, and OpenGLES2.
+namespace gnash {
+
+class DeviceGlue {
+public:
+    DeviceGlue() {};
+    ~DeviceGlue() {};
+    
+    boost::shared_array<renderer::GnashDevice::dtype_t> probeDevices() {
+        GNASH_REPORT_FUNCTION;
+        
+        size_t total = 0;
+#ifdef BUILD_EGL_DEVICE
+        total++;
+#endif
+#ifdef BUILD_RAWFB_DEVICE
+        total++;
+#endif
+#ifdef BUILD_DIRECTFB_DEVICE
+        total++;
+#endif
+#ifdef BUILD_X11_DEVICE
+        total++;
+#endif
+        total++;                // add one more for the list terminator
+        boost::shared_array<renderer::GnashDevice::dtype_t> devs
+            (new renderer::GnashDevice::dtype_t[total]);
+        // terminate the list so it can easily be walked through later.
+        devs[--total] = renderer::GnashDevice::NODEV;
+#ifdef BUILD_X11_DEVICE
+        devs[--total] = renderer::GnashDevice::X11;
+#endif
+#ifdef BUILD_EGL_DEVICE
+        devs[--total] = renderer::GnashDevice::EGL;
+#endif
+#ifdef BUILD_RAWFB_DEVICE
+        devs[--total] = renderer::GnashDevice::RAWFB;
+#endif
+#ifdef BUILD_DIRECTFB_DEVICE
+        devs[--total] = renderer::GnashDevice::DIRECTFB;
+#endif
+        return devs;
+    }
+    
+    void resetDevice() { _device.reset(); };
+    
+    renderer::GnashDevice::dtype_t getDevice()
+    {
+        if (_device) {
+            return _device->getType();
+        }
+        return renderer::GnashDevice::NODEV;
+    }
+    
+    void setDevice(renderer::GnashDevice::dtype_t dtype) {
+        switch (dtype) {
+#ifdef BUILD_EGL_DEVICE
+          case renderer::GnashDevice::EGL:
+          {
+              _device.reset(new renderer::EGLDevice);
+              break;
+          }
+#endif
+#ifdef BUILD_RAWFB_DEVICE
+          case renderer::GnashDevice::RAWFB:
+          {
+              _device.reset(new renderer::rawfb::RawFBDevice);
+              break;
+          }
+#endif
+#ifdef BUILD_DIRECTFB_DEVICE
+          case renderer::GnashDevice::DIRECTFB:
+          {
+              _device.reset(new renderer::directfb::DirectFBDevice);
+              break;
+          }
+#endif
+#ifdef BUILD_X11_DEVICE
+          case renderer::GnashDevice::X11:
+          {
+              _device.reset(new renderer::x11::X11Device);
+              break;
+          }
+#endif
+          default:
+              log_error("unsupported Display Device!");
+        }
+        // // EGL doesn't care about command line argument, so pass NULL
+        // _device->initDevice(0, 0);
+        // renderer::EGLDevice *egl = (renderer::EGLDevice*)_device.get();
+        // egl->printEGLConfig();
+        // egl->printEGLSurface();
+    }
+protected:
+    boost::scoped_ptr<renderer::GnashDevice> _device;
+};
+    
+} // namespace gnash
+
+#endif  // end of __DEVICE_GLUE_H__
+
+// local Variables:
+// mode: C++
+// indent-tabs-mode: nil
+// End:

http://git.savannah.gnu.org/cgit//commit/?id=719c29c3d22d6ef2ee1de2e14357f1cb5e43b738


commit 719c29c3d22d6ef2ee1de2e14357f1cb5e43b738
Author: Rob Savoye <address@hidden>
Date:   Sun Dec 19 18:29:07 2010 -0700

    update with the one from master

diff --git a/.gitignore b/.gitignore
index 92f8d1f..0c3c3b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,393 +1,129 @@
-Makefile.in
-Makefile
-bzrversion.h
-.deps
-.libs
+*.frame*.pp
+*unner
 *.lo
 *.la
-bzrversion.h
-gnash.pc
-*site.bak
+*.moc
+*.o
+*.out
+*.bak
+*.deb
+*.dsc
+*.changes
+*.tar.gz
+*est
+*est[0-9]
+*est[0-9][0-9]
+.configline
+.deps
+.lastmod
+.libs
 aclocal.m4
 autom4te.cache
+bzrversion.h
 compile
 config.guess
+config.log
+config.status
 config.sub
 configure
+cygnal/testsuite/cygnal.all/cygnalrc
+deb-copy-stamp
+doc/C/*.1
+doc/C/*.html
+doc/C/*.info
+doc/Doxyfile
+gnashconfig.h
 gnashconfig.h.in
+gnash.pc
+gnash-*/
+gui/*gnash
+gui/fb/fb-gnash
+gui/*.gcda
+gui/Info.plist
+libbase/gnashpluginrc
+libbase/gnashrc
 libltdl
+libnet/gnash.log
+libnet/gnash.sum
+libtool
 ltmain.sh
+macros/argz.m4
+macros/libtool.m4
+macros/lt*.m4
+Makefile
+Makefile.in
 po/*.gmo
-testsuite/swfdec/run_swfdec_testsuite_*
+py-compile
+revno.h
 site.exp
-ete.exp.bak
+stamp-h1
+testoutlog.*
 testrun.log
 testrun.sum
-testsuite/swfdec/*.log
-testsuite/swfdec/*.out
-testsuite/swfdec/*.err
-testsuite/swfdec/*.trace-gnash
-testsuite/misc-ming.all/*.swf
-*.frame*.pp
+testsuite/actionscript.all/require-ming
 testsuite/actionscript.all/*.swf
-utilities/dumpshm
-utilities/gprocessor
-utilities/soldumper
+testsuite/as3compile.all/pp_*.as
+testsuite/as3compile.all/*.swf
+testsuite/Dejagnu.swf
 testsuite/gnashrc
-testsuite/libbase.all/gnashrc
-testsuite/libbase.all/gnashrc-local
-macros/lt*.m4
-macros/libtool.m4
-macros/argz.m4
-gui/gnash
-gui/gtk-gnash
-gui/kde-gnash
-gui/kde4-gnash
-gui/haiku-gnash
-gui/sdl-gnash
-gui/fb-gnash
-gui/riscos-gnash
-gui/fltk-gnash
-gui/aqua-gnash
-gui/*.moc
-gui/*.gcda
-doc/Doxyfile
-libbase/gnashpluginrc
-libbase/gnashrc
-site.exp
-site.exp.bak
-testsuite/misc-swfmill.all/*-runner
-testsuite/misc-swfmill.all/*.swf
-testsuite/misc-swfmill.all/*Runner
-testsuite/misc-swfc.all/pp_*.sc
-testsuite/misc-swfc.all/*.swf
-testsuite/misc-swfc.all/*runner
-testsuite/misc-mtasc.all/pp_*.as
-testsuite/misc-mtasc.all/*.swf
-testsuite/misc-mtasc.all/*-runner
-testsuite/libcore.all/AsValueTest
-testsuite/libcore.all/BitsReaderTest
-testsuite/libcore.all/ClassSizes
-testsuite/libcore.all/DisplayListTest
-testsuite/libcore.all/EdgeTest
-testsuite/libcore.all/MatrixTest
-testsuite/libcore.all/PointTest
-testsuite/libcore.all/PropertyListTest
-testsuite/libcore.all/SafeStackTest
-testsuite/libcore.all/StreamTest
-testsuite/libcore.all/as_prop_flagsTest
-testsuite/samples/*Runner
-testsuite/movies.all/*Runner
-testsuite/misc-ming.all/ButtonEventsTest
-testsuite/misc-ming.all/ButtonEventsTest-Runner
-testsuite/misc-ming.all/DefineEditTextTest
-testsuite/misc-ming.all/DefineEditTextTest-Runner
-testsuite/misc-ming.all/DefineEditTextVariableNameTest
-testsuite/misc-ming.all/DefineEditTextVariableNameTest-Runner
-testsuite/misc-ming.all/DefineEditTextVariableNameTest2
-testsuite/misc-ming.all/DefineEditTextVariableNameTest2-Runner
-testsuite/misc-ming.all/DefineTextTest
-testsuite/misc-ming.all/DefineTextTest-Runner
-testsuite/misc-ming.all/Dejagnu
-testsuite/misc-ming.all/DepthLimitsTest
-testsuite/misc-ming.all/DragDropTestRunner
-testsuite/misc-ming.all/DrawingApiTestRunner
-testsuite/misc-ming.all/FlashVarsTest-Runner
-testsuite/misc-ming.all/NetStream-SquareTest
-testsuite/misc-ming.all/NetStream-SquareTestRunner
-testsuite/misc-ming.all/PlaceObject2Test
-testsuite/misc-ming.all/PlaceObject2TestRunner
-testsuite/misc-ming.all/PrototypeEventListenersTestRunner
-testsuite/misc-ming.all/RemoveObject2Test
-testsuite/misc-ming.all/RollOverOutTest
-testsuite/misc-ming.all/RollOverOutTest-Runner
-testsuite/misc-ming.all/SpriteButtonEventsTest
-testsuite/misc-ming.all/SpriteButtonEventsTest-Runner
-testsuite/misc-ming.all/VarAndCharClashTest-Runner
-testsuite/misc-ming.all/Video-EmbedSquareTest
-testsuite/misc-ming.all/Video-EmbedSquareTestRunner
-testsuite/misc-ming.all/action_execution_order_extend_test
-testsuite/misc-ming.all/action_execution_order_extend_testrunner
-testsuite/misc-ming.all/action_execution_order_test
-testsuite/misc-ming.all/action_execution_order_test1
-testsuite/misc-ming.all/action_execution_order_test11
-testsuite/misc-ming.all/action_execution_order_test11runner
-testsuite/misc-ming.all/action_execution_order_test1runner
-testsuite/misc-ming.all/action_execution_order_test2
-testsuite/misc-ming.all/action_execution_order_test2runner
-testsuite/misc-ming.all/action_execution_order_test3
-testsuite/misc-ming.all/action_execution_order_test3runner
-testsuite/misc-ming.all/action_execution_order_test4
-testsuite/misc-ming.all/action_execution_order_test4runner
-testsuite/misc-ming.all/action_execution_order_test5
-testsuite/misc-ming.all/action_execution_order_test5runner
-testsuite/misc-ming.all/action_execution_order_test6
-testsuite/misc-ming.all/action_execution_order_test6runner
-testsuite/misc-ming.all/action_execution_order_test7
-testsuite/misc-ming.all/action_execution_order_test7runner
-testsuite/misc-ming.all/action_execution_order_test8
-testsuite/misc-ming.all/action_execution_order_test8runner
-testsuite/misc-ming.all/action_execution_order_test9
-testsuite/misc-ming.all/action_execution_order_test9runner
-testsuite/misc-ming.all/action_execution_order_testrunner
-testsuite/misc-ming.all/attachMovieLoopingTest
-testsuite/misc-ming.all/attachMovieLoopingTestRunner
-testsuite/misc-ming.all/attachMovieTest
-testsuite/misc-ming.all/attachMovieTestRunner
-testsuite/misc-ming.all/callFunction_test
-testsuite/misc-ming.all/callFunction_testrunner
-testsuite/misc-ming.all/consecutive_goto_frame_test
-testsuite/misc-ming.all/consecutive_goto_frame_testrunner
-testsuite/misc-ming.all/definebitsjpeg2
-testsuite/misc-ming.all/displaylist_depths_test
-testsuite/misc-ming.all/displaylist_depths_test10
-testsuite/misc-ming.all/displaylist_depths_test10runner
-testsuite/misc-ming.all/displaylist_depths_test11
-testsuite/misc-ming.all/displaylist_depths_test11runner
-testsuite/misc-ming.all/displaylist_depths_test2
-testsuite/misc-ming.all/displaylist_depths_test2runner
-testsuite/misc-ming.all/displaylist_depths_test3
-testsuite/misc-ming.all/displaylist_depths_test3runner
-testsuite/misc-ming.all/displaylist_depths_test4
-testsuite/misc-ming.all/displaylist_depths_test4runner
-testsuite/misc-ming.all/displaylist_depths_test5
-testsuite/misc-ming.all/displaylist_depths_test5runner
-testsuite/misc-ming.all/displaylist_depths_test6
-testsuite/misc-ming.all/displaylist_depths_test6runner
-testsuite/misc-ming.all/displaylist_depths_test7
-testsuite/misc-ming.all/displaylist_depths_test7runner
-testsuite/misc-ming.all/displaylist_depths_test8
-testsuite/misc-ming.all/displaylist_depths_test8runner
-testsuite/misc-ming.all/displaylist_depths_test9
-testsuite/misc-ming.all/displaylist_depths_test9runner
-testsuite/misc-ming.all/displaylist_depths_testrunner
-testsuite/misc-ming.all/duplicate_movie_clip_test
-testsuite/misc-ming.all/duplicate_movie_clip_test2
-testsuite/misc-ming.all/duplicate_movie_clip_test2runner
-testsuite/misc-ming.all/duplicate_movie_clip_testrunner
-testsuite/misc-ming.all/eventSoundTest1
-testsuite/misc-ming.all/eventSoundTest1-Runner
-testsuite/misc-ming.all/event_handler_scope_test
-testsuite/misc-ming.all/event_handler_scope_testrunner
-testsuite/misc-ming.all/frame_label_test
-testsuite/misc-ming.all/frame_label_testrunner
-testsuite/misc-ming.all/getTimer_test
-testsuite/misc-ming.all/getTimer_testrunner
-testsuite/misc-ming.all/get_frame_number_test
-testsuite/misc-ming.all/get_frame_number_testrunner
-testsuite/misc-ming.all/gotoFrame2Test-Runner
-testsuite/misc-ming.all/goto_frame_test
-testsuite/misc-ming.all/goto_frame_testrunner
-testsuite/misc-ming.all/init_action_test
-testsuite/misc-ming.all/init_action_testrunner
-testsuite/misc-ming.all/instanceNameTest
-testsuite/misc-ming.all/instanceNameTestRunner
-testsuite/misc-ming.all/intervalTestRunner
-testsuite/misc-ming.all/key_event_test
-testsuite/misc-ming.all/key_event_testrunner
-testsuite/misc-ming.all/loadMovieTest
-testsuite/misc-ming.all/loadMovieTestRunner
-testsuite/misc-ming.all/loop_test
-testsuite/misc-ming.all/loop_test-Runner
-testsuite/misc-ming.all/loop_test10
-testsuite/misc-ming.all/loop_test10runner
-testsuite/misc-ming.all/loop_test2
-testsuite/misc-ming.all/loop_test2runner
-testsuite/misc-ming.all/loop_test3
-testsuite/misc-ming.all/loop_test3runner
-testsuite/misc-ming.all/loop_test4
-testsuite/misc-ming.all/loop_test4runner
-testsuite/misc-ming.all/loop_test5
-testsuite/misc-ming.all/loop_test5runner
-testsuite/misc-ming.all/loop_test6
-testsuite/misc-ming.all/loop_test6runner
-testsuite/misc-ming.all/loop_test7
-testsuite/misc-ming.all/loop_test7runner
-testsuite/misc-ming.all/loop_test8
-testsuite/misc-ming.all/loop_test8runner
-testsuite/misc-ming.all/loop_test9
-testsuite/misc-ming.all/loop_test9runner
-testsuite/misc-ming.all/masks_test
-testsuite/misc-ming.all/masks_test2
-testsuite/misc-ming.all/masks_test2runner
-testsuite/misc-ming.all/masks_testrunner
-testsuite/misc-ming.all/matrix_test
-testsuite/misc-ming.all/matrix_testrunner
-testsuite/misc-ming.all/morph_test1
-testsuite/misc-ming.all/morph_test1runner
-testsuite/misc-ming.all/move_object_test
-testsuite/misc-ming.all/move_object_testrunner
-testsuite/misc-ming.all/moviecliploader_test
-testsuite/misc-ming.all/multi_doactions_and_goto_frame_test
-testsuite/misc-ming.all/multi_doactions_and_goto_frame_testrunner
-testsuite/misc-ming.all/new_child_in_unload_test
-testsuite/misc-ming.all/new_child_in_unload_testrunner
-testsuite/misc-ming.all/opcode_guard_test
-testsuite/misc-ming.all/opcode_guard_testrunner
-testsuite/misc-ming.all/path_format_test
-testsuite/misc-ming.all/path_format_testrunner
-testsuite/misc-ming.all/place_and_remove_object_insane_test
-testsuite/misc-ming.all/place_and_remove_object_insane_testrunner
-testsuite/misc-ming.all/place_and_remove_object_test
-testsuite/misc-ming.all/place_and_remove_object_testrunner
-testsuite/misc-ming.all/place_object_test
-testsuite/misc-ming.all/place_object_test2
-testsuite/misc-ming.all/place_object_test2runner
-testsuite/misc-ming.all/place_object_testrunner
-testsuite/misc-ming.all/registerClassTest
-testsuite/misc-ming.all/registerClassTest2
-testsuite/misc-ming.all/registerClassTest2runner
-testsuite/misc-ming.all/registerClassTestRunner
-testsuite/misc-ming.all/replace_buttons1test
-testsuite/misc-ming.all/replace_buttons1test_runner
-testsuite/misc-ming.all/replace_shapes1test
-testsuite/misc-ming.all/replace_shapes1test_runner
-testsuite/misc-ming.all/replace_sprites1test
-testsuite/misc-ming.all/replace_sprites1test_runner
-testsuite/misc-ming.all/reverse_execute_PlaceObject2_test1
-testsuite/misc-ming.all/reverse_execute_PlaceObject2_test1runner
-testsuite/misc-ming.all/reverse_execute_PlaceObject2_test2
-testsuite/misc-ming.all/reverse_execute_PlaceObject2_test2runner
-testsuite/misc-ming.all/root_stop_test
-testsuite/misc-ming.all/root_stop_testrunner
-testsuite/misc-ming.all/runtime_vm_stack_test
-testsuite/misc-ming.all/runtime_vm_stack_testrunner
-testsuite/misc-ming.all/shape_test
-testsuite/misc-ming.all/shape_testrunner
-testsuite/misc-ming.all/simple_loop_test
-testsuite/misc-ming.all/simple_loop_testrunner
-testsuite/misc-ming.all/spritehier
-testsuite/misc-ming.all/static_vs_dynamic1
-testsuite/misc-ming.all/static_vs_dynamic1_testrunner
-testsuite/misc-ming.all/static_vs_dynamic2
-testsuite/misc-ming.all/static_vs_dynamic2_testrunner
-testsuite/misc-ming.all/streamingSoundTest1
-testsuite/misc-ming.all/streamingSoundTest1-Runner
-testsuite/misc-ming.all/timeline_var_test
-testsuite/misc-ming.all/timeline_var_test-Runner
-testsuite/misc-ming.all/unload_movieclip_test1
-testsuite/misc-ming.all/unload_movieclip_test1runner
-testsuite/libnet.all/test_cque
-testsuite/libnet.all/test_handler
-testsuite/libnet.all/test_http
-testsuite/libnet.all/test_rtmp
-testsuite/libgeometry/snappingrangetest
-testsuite/libgeometry/Range2dTest
-testsuite/libgeometry/Point2dTest
-testsuite/libbase/memtest
-testsuite/libbase/URLTest
-testsuite/libbase/RcTest
-testsuite/libbase/NoSeekFileTest
-testsuite/libbase/NoSeekFileTestCache
-testsuite/libbase/IntTypesTest
-testsuite/libbase/CurlStreamTest
 testsuite/libamf.all/test_amf
+testsuite/libamf.all/test_amfmsg
 testsuite/libamf.all/test_buffer
 testsuite/libamf.all/test_el
+testsuite/libamf.all/test_flv
 testsuite/libamf.all/test_lc
-testsuite/libamf.all/test_sol
 testsuite/libamf.all/testout.sol
-testsuite/actionscript.all/require-ming
-testsuite/actionscript.all/astests-v*-Runner
-gnashconfig.h
-testsuite/misc-haxe.all/*.swf
-testsuite/misc-haxe.all/PP_*
-testsuite/misc-haxe.all/*-runner
-testsuite/misc-ming.all/SharedObjectTestRunner
-utilities/flvdumper
+testsuite/libamf.all/test_sol
+testsuite/libbase.all/gnashrc
+testsuite/libbase.all/gnashrc-local
+testsuite/libbase.all/NoSeekFileTestCache
 testsuite/libbase/gnashrc
 testsuite/libbase/gnashrc-local
-plugin/klash/klash_part.moc
-libnet/gnash.log
-libnet/gnash.sum
-libnet/site.bak
-config.log
-config.status
-stamp-h1
-gui/.configline
-libtool
-doc/C/*.1
-doc/C/*.html
-doc/C/*.info
-cygnal/testsuite/cygnal.all/cygnalrc
-gui/Info.plist
-gui/klash.moc
-testsuite/Dejagnu.swf
-testsuite/tmpSharedObject
-testsuite/libamf.all/test_flv
-testsuite/libbase/Point2dTest
-testsuite/libbase/Range2dTest
-testsuite/libbase/snappingrangetest
-testsuite/libbase/string_tableTest
-testsuite/libnet.all/site.bak
+testsuite/libbase/NoSeekFileTestCache
+testsuite/libcore.all/ClassSizes
+testsuite/libnet.all/*.bin
+testsuite/libnet.all/fooBar1
+testsuite/libnet.all/generate_amfbins
 testsuite/libnet.all/test_cache
-testsuite/misc-ming.all/BitmapDataTest
-testsuite/misc-ming.all/EmbeddedSoundTest
-testsuite/misc-ming.all/LoadVarsTest
-testsuite/misc-ming.all/XMLSocketTest
-testsuite/misc-ming.all/XMLSocketTest
-testsuite/misc-ming.all/loadImageTest
-utilities/rtmpget
+testsuite/libnet.all/test_cque
 testsuite/libnet.all/test_diskstream
-testsuite/misc-ming.all/LoadVarsTestRunner
-testsuite/misc-ming.all/EmbeddedSoundTest-Runner
-testsuite/misc-ming.all/DepthLimitsTestrunner
-testsuite/misc-haxe.all/site.bak
-testsuite/misc-ming.all/site.bak
-testsuite/misc-mtasc.all/site.bak
-testsuite/misc-swfc.all/site.bak
-testsuite/misc-swfmill.all/site.bak
-testsuite/movies.all/site.bak
-testsuite/samples/site.bak
-testsuite/libcore.all/site.bak
-testsuite/libbase/site.bak
-testsuite/actionscript.all/site.bak
-testsuite/libamf.all/site.bak
-testsuite/libnet.all/generate_amfbins
-py-compile
-utilities/findmicrophones
-utilities/findwebcams
+testsuite/libnet.all/test_handler
+testsuite/libnet.all/test_http
+testsuite/libnet.all/test_rtmp
 testsuite/misc-haxe.all/classes.all/*.swf
-testsuite/libamf.all/test_amfmsg
-testsuite/libbase.all/IntTypesTest
-testsuite/libbase.all/NoSeekFileTest
-testsuite/libbase.all/NoSeekFileTestCache
-testsuite/libbase.all/Point2dTest
-testsuite/libbase.all/Range2dTest
-testsuite/libbase.all/RcTest
-testsuite/libbase.all/URLTest
-testsuite/libbase.all/snappingrangetest
-testsuite/libbase.all/string_tableTest
-testsuite/libcore.all/PropFlagsTest
-testsuite/libnet.all/amf0-boolean.bin
-testsuite/libnet.all/amf0-null-object.bin
-testsuite/libnet.all/amf0-null-string.bin
-testsuite/libnet.all/amf0-number.bin
-testsuite/libnet.all/amf0-string.bin
-testsuite/libnet.all/amf0-undefined-object.bin
-testsuite/libnet.all/amf0-unsupported-object.bin
-testsuite/libnet.all/fooBar1
-testsuite/misc-ming.all/BitmapSmoothingTest
-testsuite/misc-ming.all/ButtonPropertiesTest
-testsuite/misc-ming.all/ButtonPropertiesTestRunner
-testsuite/misc-ming.all/DeviceFontTest
-testsuite/misc-ming.all/DeviceFontTestRunner
-testsuite/misc-ming.all/EmbeddedFontTest
-testsuite/misc-ming.all/EmbeddedFontTestRunner
-testsuite/misc-ming.all/TextSnapshotTest
-testsuite/misc-ming.all/TextSnapshotTest-Runner
-testsuite/misc-ming.all/InitActionTest2
-testsuite/misc-ming.all/InitActionTest2Runner
-testsuite/misc-ming.all/LCTestRunner
-testsuite/misc-ming.all/RegisterClassTest3
-testsuite/misc-ming.all/RegisterClassTest3Runner
+testsuite/misc-haxe.all/PP_*
+testsuite/misc-haxe.all/*.swf
+testsuite/misc-ming.all/action_order/*.swf
+testsuite/misc-ming.all/BeginBitmapFill
+testsuite/misc-ming.all/BitmapDataDraw
+testsuite/misc-ming.all/definebitsjpeg2
+testsuite/misc-ming.all/Dejagnu
+testsuite/misc-ming.all/displaylist_depths/*.swf
+testsuite/misc-ming.all/KeyEventOrder
+testsuite/misc-ming.all/loading/*.swf
+testsuite/misc-ming.all/loop/*.swf
+testsuite/misc-ming.all/spritehier
+testsuite/misc-ming.all/static_vs_dynamic1
+testsuite/misc-ming.all/static_vs_dynamic2
+testsuite/misc-ming.all/*.swf
 testsuite/misc-ming.all/XMLSocketTester
-testsuite/misc-ming.all/attachExtImported-Runner
-testsuite/misc-ming.all/attachImported-Runner
-testsuite/as3compile.all/pp_*.as
-testsuite/as3compile.all/*.swf
-testsuite/as3compile.all/bogustests-runner
-testsuite/as3compile.all/sanetests-runner
-testsuite/libbase.all/gnashrc
-testsuite/libbase.all/gnashrc-local
-testsuite/libcore.all/CodeStreamTest
+testsuite/misc-mtasc.all/pp_*.as
+testsuite/misc-mtasc.all/*.swf
+testsuite/misc-swfc.all/pp_*.sc
+testsuite/misc-swfc.all/*.swf
+testsuite/misc-swfmill.all/*.swf
+testsuite/misc-swfmill.all/trace-as2/*.swf
+testsuite/swfdec/*.err
+testsuite/swfdec/*.log
+testsuite/swfdec/run_swfdec_testsuite_*
+testsuite/swfdec/*.trace-gnash
+testsuite/swfdec/src
+testsuite/tmpSharedObject
+utilities/dumpshm
+utilities/findmicrophones
+utilities/findwebcams
+utilities/flvdumper
+utilities/gprocessor
+utilities/rtmpget
+utilities/soldumper
+extensions/fileio/test.swf

-----------------------------------------------------------------------

Summary of changes:
 .gitignore                                 |  466 ++++++----------------------
 gui/Makefile.am                            |    3 +-
 gui/fb/fb.cpp                              |   20 +-
 gui/fb/fb_glue.h                           |  108 ++-----
 gui/fb/fb_glue_ovg.cpp                     |  122 ++++++++
 gui/fb/fb_glue_ovg.h                       |   45 ++-
 gui/gtk/gtk.am                             |    2 +-
 gui/gtk/gtk_canvas.cpp                     |   36 +-
 gui/gtk/gtk_glue.h                         |    4 +-
 gui/gtk/gtk_glue_agg.cpp                   |    6 +
 gui/gtk/gtk_glue_ovg.cpp                   |  408 ++++++++++++++++++++++++
 gui/gtk/{gtk_glue_egl.h => gtk_glue_ovg.h} |   43 +--
 gui/test_glue.cpp                          |  115 +++++---
 gui/fb/fb_glue.h => libdevice/DeviceGlue.h |   83 +++---
 libdevice/Makefile.am                      |    1 +
 libdevice/events/EventDevice.cpp           |   21 ++-
 libdevice/x11/X11Device.h                  |    2 +-
 librender/Renderer.h                       |   11 -
 18 files changed, 873 insertions(+), 623 deletions(-)
 create mode 100644 gui/gtk/gtk_glue_ovg.cpp
 copy gui/gtk/{gtk_glue_egl.h => gtk_glue_ovg.h} (64%)
 copy gui/fb/fb_glue.h => libdevice/DeviceGlue.h (74%)


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]