[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cp...
From: |
Bastiaan Jacques |
Subject: |
[Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cp... |
Date: |
Thu, 13 Mar 2008 06:43:55 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Bastiaan Jacques <bjacques> 08/03/13 06:43:55
Modified files:
. : ChangeLog
backend : render_handler_cairo.cpp
gui : gtk_glue_cairo.cpp gtk_glue_cairo.h
Log message:
* backend/render_handler_cairo.cpp: Store some ints as ints.
* gui/gtk_glue_cairo.{cpp,h}: Make the GTK window
single-buffered,
because we provide our own double-buffering mechanism.
configure():
Try to create a buffer that's similar to the GDK buffer. This
significantly improves performance. render(): Implement
invalidated
bounds.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5892&r2=1.5893
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_cairo.cpp?cvsroot=gnash&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk_glue_cairo.cpp?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk_glue_cairo.h?cvsroot=gnash&r1=1.14&r2=1.15
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5892
retrieving revision 1.5893
diff -u -b -r1.5892 -r1.5893
--- ChangeLog 12 Mar 2008 23:19:02 -0000 1.5892
+++ ChangeLog 13 Mar 2008 06:43:54 -0000 1.5893
@@ -1,5 +1,14 @@
2008-03-12 Bastiaan Jacques <address@hidden>
+ * backend/render_handler_cairo.cpp: Store some ints as ints.
+ * gui/gtk_glue_cairo.{cpp,h}: Make the GTK window single-buffered,
+ because we provide our own double-buffering mechanism. configure():
+ Try to create a buffer that's similar to the GDK buffer. This
+ significantly improves performance. render(): Implement invalidated
+ bounds.
+
+2008-03-12 Bastiaan Jacques <address@hidden>
+
* backend/render_handler_ogl.cpp: Compliation fix.
2008-03-12 Sandro Santilli <address@hidden>
Index: backend/render_handler_cairo.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_cairo.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- backend/render_handler_cairo.cpp 21 Jan 2008 20:56:05 -0000 1.38
+++ backend/render_handler_cairo.cpp 13 Mar 2008 06:43:55 -0000 1.39
@@ -436,7 +436,7 @@
{
cairo_move_to(cr, cur_path.ap.x, cur_path.ap.y);
- float prev_x = cur_path.ap.x,
+ int prev_x = cur_path.ap.x,
prev_y = cur_path.ap.y;
for (std::vector<edge>::const_iterator it = cur_path.m_edges.begin(),
@@ -459,8 +459,8 @@
float x2 = cur_edge.cp.x + one_third * (cur_edge.ap.x - cur_edge.cp.x);
float y2 = cur_edge.cp.y + one_third * (cur_edge.ap.y - cur_edge.cp.y);
- const float& x3 = cur_edge.ap.x;
- const float& y3 = cur_edge.ap.y;
+ const int& x3 = cur_edge.ap.x;
+ const int& y3 = cur_edge.ap.y;
cairo_curve_to(cr, x1, y1, x2, y2, x3, y3);
Index: gui/gtk_glue_cairo.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gtk_glue_cairo.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- gui/gtk_glue_cairo.cpp 21 Jan 2008 20:55:40 -0000 1.15
+++ gui/gtk_glue_cairo.cpp 13 Mar 2008 06:43:55 -0000 1.16
@@ -51,6 +51,7 @@
_drawing_area = drawing_area;
assert(_drawing_area);
assert(_drawing_area->window);
+ gtk_widget_set_double_buffered(_drawing_area, FALSE);
}
render_handler*
@@ -62,6 +63,23 @@
}
void
+GtkCairoGlue::render(int minx, int miny, int maxx, int maxy)
+{
+ if (!_cairo_offscreen) {
+ return;
+ }
+
+ cairo_save(_cairo_offscreen);
+
+ cairo_rectangle(_cairo_offscreen, minx, miny, maxx - minx, maxy - miny);
+ cairo_clip(_cairo_offscreen);
+
+ render();
+
+ cairo_restore(_cairo_offscreen);
+}
+
+void
GtkCairoGlue::render()
{
if (!_cairo_offscreen) return;
@@ -81,9 +99,17 @@
// Create cairo handle for output window
_cairo_handle = gdk_cairo_create(_drawing_area->window);
- // Create offscreen image for rendering
- cairo_surface_t* surface = cairo_image_surface_create(
+ cairo_surface_t* target = cairo_get_target(_cairo_handle);
+
+ cairo_surface_t* surface = cairo_surface_create_similar(target,
+ cairo_surface_get_content(target), event->width, event->height);
+
+ if (cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) {
+ // fallback image surface
+ surface = cairo_image_surface_create(
CAIRO_FORMAT_ARGB32, event->width, event->height);
+ }
+
_cairo_offscreen = cairo_create(surface);
cairo_surface_destroy(surface);
Index: gui/gtk_glue_cairo.h
===================================================================
RCS file: /sources/gnash/gnash/gui/gtk_glue_cairo.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- gui/gtk_glue_cairo.h 21 Jan 2008 20:55:42 -0000 1.14
+++ gui/gtk_glue_cairo.h 13 Mar 2008 06:43:55 -0000 1.15
@@ -35,9 +35,7 @@
void prepDrawingArea(GtkWidget *drawing_area);
render_handler* createRenderHandler();
void render();
- void render(int /*minx*/, int /*miny*/, int /*maxx*/, int /*maxy*/) {
- render();
- };
+ void render(int minx, int miny, int maxx, int maxy);
void configure(GtkWidget *const widget, GdkEventConfigure *const event);
private:
cairo_t *_cairo_handle;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog backend/render_handler_cairo.cp...,
Bastiaan Jacques <=