gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler.h backen...


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Thu, 26 Oct 2006 13:15:46 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   06/10/26 13:15:46

Modified files:
        .              : ChangeLog 
        backend        : render_handler.h render_handler_agg.cpp 
        gui            : gtk.cpp gtk_glue.h gtk_glue_agg.cpp 
                         gtk_glue_agg.h gtksup.h gui.cpp gui.h 
                         sdl_agg_glue.cpp sdl_agg_glue.h 

Log message:
        Reverted Bastiaan's changes (set_invalidated_region)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1396&r2=1.1397
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk.cpp?cvsroot=gnash&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk_glue.h?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk_glue_agg.cpp?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk_glue_agg.h?cvsroot=gnash&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtksup.h?cvsroot=gnash&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gui.cpp?cvsroot=gnash&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gui.h?cvsroot=gnash&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/sdl_agg_glue.cpp?cvsroot=gnash&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/sdl_agg_glue.h?cvsroot=gnash&r1=1.2&r2=1.3

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.1396
retrieving revision 1.1397
diff -u -b -r1.1396 -r1.1397
--- ChangeLog   26 Oct 2006 11:12:50 -0000      1.1396
+++ ChangeLog   26 Oct 2006 13:15:46 -0000      1.1397
@@ -15,6 +15,11 @@
          backend/render_handler_agg_style.h: Fully implemented
          bitmap and gradient fill styles and split main AGG
          renderer file for better readability.
+       * backend/render_handler.h, backend/render_handler_agg.cpp,
+         gui/gtk.cpp, gui/gtk_glue.h, gui/gtk_glue_agg.cpp,
+         gui/gtk_glue_agg.h, gui/gtksup.h, gui/gui.cpp,
+         gui/gui.h, gui/sdl_agg_glue.cpp, gui/sdl_agg_glue.h:
+         Reverted Bastiaan's changes (set_invalidated_region)
 
 2006-10-25 Sandro Santilli <address@hidden>
 

Index: backend/render_handler.h
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- backend/render_handler.h    22 Oct 2006 22:53:28 -0000      1.16
+++ backend/render_handler.h    26 Oct 2006 13:15:46 -0000      1.17
@@ -35,7 +35,7 @@
 // 
 //
 
-/* $Id: render_handler.h,v 1.16 2006/10/22 22:53:28 bjacques Exp $ */
+/* $Id: render_handler.h,v 1.17 2006/10/26 13:15:46 udog Exp $ */
 
 #ifndef RENDER_HANDLER_H
 #define RENDER_HANDLER_H
@@ -270,12 +270,6 @@
                // implementation is optional    
        }
        
-       /// Sets the passed integers to the invalidated region coordinates.
-       virtual void get_invalidated_region(int& /*xmin*/, int& /*ymin*/,
-                                           int& /*xmax*/, int& /*ymax*/) {
-
-       }
-  
   /// Converts world coordinates to pixel coordinates
   virtual void world_to_pixel(int *x, int *y, const float world_x, 
     const float world_y) = 0;  

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- backend/render_handler_agg.cpp      26 Oct 2006 08:22:18 -0000      1.28
+++ backend/render_handler_agg.cpp      26 Oct 2006 13:15:46 -0000      1.29
@@ -34,7 +34,7 @@
 // forward this exception.
  
 
-/* $Id: render_handler_agg.cpp,v 1.28 2006/10/26 08:22:18 udog Exp $ */
+/* $Id: render_handler_agg.cpp,v 1.29 2006/10/26 13:15:46 udog Exp $ */
 
 // Original version by Udo Giacomozzi and Hannes Mayr, 
 // INDUNET GmbH (www.indunet.it)
@@ -1341,13 +1341,6 @@
   
   }
 
-  virtual void get_invalidated_region(int& xmin, int& ymin, int& xmax, int& 
ymax) {
-    xmin = m_clip_xmin;
-    ymin = m_clip_ymin;
-    xmax = m_clip_xmax;
-    ymax = m_clip_ymax;
-  }
-  
   void get_pixel(rgba& color_return, float world_x, float world_y) {
     int x, y;
     

Index: gui/gtk.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gtk.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- gui/gtk.cpp 24 Oct 2006 11:11:16 -0000      1.44
+++ gui/gtk.cpp 26 Oct 2006 13:15:46 -0000      1.45
@@ -47,7 +47,6 @@
 #include "rc.h"
 #include "gtksup.h"
 #include "render_handler.h"
-#include "render.h"
 
 #include <iostream>
 #include <X11/keysym.h>
@@ -219,7 +218,55 @@
 void
 GtkGui::renderBuffer()
 {
-               glue.render();
+               glue.render(m_draw_minx, m_draw_miny, m_draw_maxx, m_draw_maxy);
+}
+
+int
+GtkGui::valid_coord(int coord, int max)
+{
+       if (coord<0) return 0;
+       else if (coord>=max) return max;
+       return coord;
+}
+
+void
+GtkGui::set_invalidated_region(const rect& bounds)
+{
+#ifdef RENDERER_AGG
+  // forward to renderer
+  _renderer->set_invalidated_region(bounds);
+
+  if ( bounds.width() > 1e10f ) {
+    // Region is entire screen. Don't convert to integer as this will overflow.
+
+    m_draw_minx=0;
+    m_draw_miny=0;
+    m_draw_maxx=_width-1;
+    m_draw_maxy=_height-1;
+
+  } else {
+
+    // remember for renderBuffer()
+    _renderer->world_to_pixel(&m_draw_minx, &m_draw_miny, bounds.get_x_min(), 
bounds.get_y_min());
+    _renderer->world_to_pixel(&m_draw_maxx, &m_draw_maxy, bounds.get_x_max(), 
bounds.get_y_max());
+
+    // add two pixels because of anti-aliasing...
+    m_draw_minx = valid_coord(m_draw_minx-2, _width);
+    m_draw_miny = valid_coord(m_draw_miny-2, _height);
+    m_draw_maxx = valid_coord(m_draw_maxx+2, _width);
+    m_draw_maxy = valid_coord(m_draw_maxy+2, _height);
+
+       }
+       
+       /*
+       log_msg("GtkGui::set_invalidated_region pixel: x1:%i, y1:%i, x2:%i, 
y2:%i\n", \
+               m_draw_minx,
+               m_draw_miny, \
+               m_draw_maxx, \
+               m_draw_maxy \
+       );
+       */
+#endif
 }
 
 void
@@ -532,7 +579,7 @@
        //       (look at the GdkEventExpose)
        rect draw_bounds(-1e10f, -1e10f, +1e10f, +1e10f);
 
-       get_render_handler()->set_invalidated_region(draw_bounds);
+       gui->set_invalidated_region(draw_bounds);
 
        gui->renderBuffer();
 

Index: gui/gtk_glue.h
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gtk_glue.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- gui/gtk_glue.h      22 Oct 2006 22:53:28 -0000      1.6
+++ gui/gtk_glue.h      26 Oct 2006 13:15:46 -0000      1.7
@@ -53,6 +53,8 @@
     virtual render_handler* createRenderHandler() = 0;
     virtual void setRenderHandlerSize(int /*width*/, int /*height*/) { };
     virtual void render() = 0;
+    virtual void render(int /*minx*/, int /*miny*/, int /*maxx*/, int /*maxy*/)
+                       { render();     };
     virtual void configure(GtkWidget *const widget,
                            GdkEventConfigure *const event) = 0;
   protected:

Index: gui/gtk_glue_agg.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gtk_glue_agg.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- gui/gtk_glue_agg.cpp        22 Oct 2006 22:53:28 -0000      1.6
+++ gui/gtk_glue_agg.cpp        26 Oct 2006 13:15:46 -0000      1.7
@@ -35,7 +35,7 @@
 //
 //
 
-/* $Id: gtk_glue_agg.cpp,v 1.6 2006/10/22 22:53:28 bjacques Exp $ */
+/* $Id: gtk_glue_agg.cpp,v 1.7 2006/10/26 13:15:46 udog Exp $ */
 
 #include <cstdio>
 #include <cerrno>
@@ -179,26 +179,35 @@
 void
 GtkAggGlue::render()
 {
-       int xmin, ymin, xmax, ymax;
-       _agg_renderer->get_invalidated_region(xmin, ymin, xmax, ymax);
+       // Update the entire screen
+       gdk_draw_rgb_image (
+               _drawing_area->window,
+               _drawing_area->style->fg_gc[GTK_STATE_NORMAL],
+               0,
+               0,
+               _width,
+               _height,
+               GDK_RGB_DITHER_NONE,
+               _offscreenbuf,
+               (int)(_width*_bpp/8)
+       );
+}
 
-       // add two pixels because of anti-aliasing...
-       xmin = valid_coord(xmin-2, _width);
-       ymin = valid_coord(ymin-2, _height);
-       xmax = valid_coord(xmax+2, _width);
-       ymax = valid_coord(ymax+2, _height);
+void
+GtkAggGlue::render(int minx, int miny, int maxx, int maxy)
+{
 
        // Update only the invalidated rectangle
        gdk_draw_rgb_image (
                _drawing_area->window,
                _drawing_area->style->fg_gc[GTK_STATE_NORMAL],
-               xmin,
-               ymin,
-               xmax - xmin,
-               ymax - ymin,
+               minx,
+       miny,
+               maxx-minx,
+               maxy-miny,
                GDK_RGB_DITHER_NONE,
-               _offscreenbuf + ymin*(_width*(_bpp/8)) + xmin*(_bpp/8),
-               static_cast<int>((_width)*_bpp/8)
+               _offscreenbuf + miny*(_width*(_bpp/8)) + minx*(_bpp/8),
+               (int)((_width)*_bpp/8)
        );
 }
 

Index: gui/gtk_glue_agg.h
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gtk_glue_agg.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- gui/gtk_glue_agg.h  22 Oct 2006 22:53:28 -0000      1.2
+++ gui/gtk_glue_agg.h  26 Oct 2006 13:15:46 -0000      1.3
@@ -54,6 +54,7 @@
     render_handler* createRenderHandler();
     void setRenderHandlerSize(int width, int height);
     void render();
+    void render(int minx, int miny, int maxx, int maxy);
     void configure(GtkWidget *const widget, GdkEventConfigure *const event);
   private:
     unsigned char *_offscreenbuf;

Index: gui/gtksup.h
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gtksup.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- gui/gtksup.h        22 Oct 2006 22:53:28 -0000      1.26
+++ gui/gtksup.h        26 Oct 2006 13:15:46 -0000      1.27
@@ -135,6 +135,8 @@
 
     GdkPixbuf* create_pixbuf(const gchar *filename);
 
+    void set_invalidated_region(const rect& bounds);
+
     virtual void setCursor(gnash_cursor_type newcursor);
 
  private:
@@ -142,6 +144,10 @@
     GdkPixbuf  *_window_icon_pixbuf;
     GtkWidget   *_drawing_area;    
     GtkMenu     *_popup_menu;
+    int                                m_draw_minx;
+    int                                m_draw_miny;
+    int                                m_draw_maxx;
+    int                                m_draw_maxy;
 
        int valid_coord(int coord, int max);
 #ifdef RENDERER_CAIRO

Index: gui/gui.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gui.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- gui/gui.cpp 23 Oct 2006 15:59:37 -0000      1.40
+++ gui/gui.cpp 26 Oct 2006 13:15:46 -0000      1.41
@@ -255,7 +255,7 @@
        {
                // Tell the GUI that we only need to update this region
                // (it may ignore this information)
-               _renderer->set_invalidated_region(changed_bounds);
+               set_invalidated_region(changed_bounds);
 
                // render the frame      
                m->display();

Index: gui/gui.h
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/gui.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- gui/gui.h   24 Oct 2006 11:11:16 -0000      1.32
+++ gui/gui.h   26 Oct 2006 13:15:46 -0000      1.33
@@ -122,6 +122,24 @@
     /// Register event handlers.
     virtual bool setupEvents() = 0;
 
+    /// Defines the region on the stage that needs to be redrawn/updated.
+    //
+    /// Changes outside that region are unnecessary but not disallowed.
+    /// Coordinates are in TWIPS!
+    ///
+    /// Note this information is given to the GUI and not directly to the 
+    /// renderer because both of them need to support this feature for 
+    /// correct results. It is up to the GUI to forward this information to
+    /// the renderer.
+    ///
+    virtual void set_invalidated_region(const rect& /*bounds*/) {      
+      // does not need to be implemented (optional feature),
+      // but still needs to be available.
+      // Why "rect" (floats)? Because the gui does not really
+      // know about the
+      // scale the renderer currently uses... 
+    } 
+
     /// Asks the GUI handler if the next frame should be redrawn completely. 
     /// For example, when the contents of the player window have been 
destroyed,
     /// then want_redraw() should return true so that set_invalidated_region() 
is

Index: gui/sdl_agg_glue.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/sdl_agg_glue.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- gui/sdl_agg_glue.cpp        22 Oct 2006 22:53:28 -0000      1.3
+++ gui/sdl_agg_glue.cpp        26 Oct 2006 13:15:46 -0000      1.4
@@ -98,8 +98,6 @@
 bool
 SdlAggGlue::prepDrawingArea(int width, int height, uint32_t sdl_flags)
 {
-    _width = width;
-    _height = height;
     int depth_bytes = _bpp / 8;
 
     assert(_bpp % 8 == 0);
@@ -162,40 +160,6 @@
     return true;
 }
 
-static int
-valid_coord(int coord, int max)
-{ 
-    if (coord<0) return 0;
-    else if (coord>=max) return max;
-
-    return coord;
-}
-
-
-void
-SdlAggGlue::render()
-{
-    int xmin, ymin, xmax, ymax;
-
-    _agg_renderer->get_invalidated_region(xmin, ymin, xmax, ymax);
-
-    // add two pixels because of anti-aliasing...
-    xmin = valid_coord(xmin-2, _width);
-    ymin = valid_coord(ymin-2, _height);
-    xmax = valid_coord(xmax+2, _width);
-    ymax = valid_coord(ymax+2, _height);
-
-    // Our invalidated rectangle.
-    SDL_Rect area;
-    area.w = xmax - xmin;
-    area.h = ymax - ymin;
-    area.x = xmin;
-    area.y = ymin;
-
-    SDL_BlitSurface(_sdl_surface, &area, _screen, &area);
-
-    SDL_UpdateRect (_screen, area.x, area.y, area.w, area.h);
-}
 
 
 } // namespace gnash

Index: gui/sdl_agg_glue.h
===================================================================
RCS file: /cvsroot/gnash/gnash/gui/sdl_agg_glue.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- gui/sdl_agg_glue.h  22 Oct 2006 22:53:28 -0000      1.2
+++ gui/sdl_agg_glue.h  26 Oct 2006 13:15:46 -0000      1.3
@@ -63,8 +63,6 @@
     unsigned char   *_offscreenbuf;
     SDL_Surface     *_screen;
     render_handler  *_agg_renderer;
-    int             _width;
-    int             _height;
 };
 
 }




reply via email to

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