[Top][All Lists]
[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;
};
}
- [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., (continued)
- [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Udo Giacomozzi, 2006/10/16
- [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Bastiaan Jacques, 2006/10/22
- Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Udo Giacomozzi, 2006/10/23
- Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Bastiaan Jacques, 2006/10/24
- Re[2]: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Udo Giacomozzi, 2006/10/24
- Re: Re[2]: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Bastiaan Jacques, 2006/10/25
- Re[4]: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Udo Giacomozzi, 2006/10/25
- Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., strk, 2006/10/26
- Re[2]: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Udo Giacomozzi, 2006/10/26
- Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen..., Hannes Mayr, 2006/10/26
[Gnash-commit] gnash ChangeLog backend/render_handler.h backen...,
Udo Giacomozzi <=