diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-03-04 16:57:07 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-03-04 16:57:59 +0000 |
commit | 2567d8040d060525a1125a36e4e3704421833787 (patch) | |
tree | da6d0c42e98519b13ab28d5856fcfd5cf7be2407 | |
parent | 563bfd69ba451b4db69de353c7c876483094a743 (diff) |
drop temp surface and draw direct to backing basebmp surface
Change-Id: I370a0f635bea17729539e8b6da4c3f1d195ad43b
-rw-r--r-- | vcl/inc/unx/gtk/gtkgdi.hxx | 2 | ||||
-rw-r--r-- | vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 18 |
2 files changed, 6 insertions, 14 deletions
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index 66aa0e0539bf..28e3f7b64d76 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -78,7 +78,7 @@ private: static GtkStyleContext *mpComboboxStyle; static GtkStyleContext *mpListboxStyle; - void renderAreaToPix( cairo_surface_t* source, cairo_rectangle_int_t *region ); + void queue_draw_area(cairo_rectangle_int_t *region); void getStyleContext( GtkStyleContext** style, GtkWidget* widget ); Rectangle NWGetScrollButtonRect( ControlPart nPart, Rectangle aAreaRect ); Rectangle NWGetSpinButtonRect( ControlPart nPart, Rectangle aAreaRect); diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 7c0f24583d88..c54657b19c92 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -912,9 +912,9 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co cairo_rectangle_int_t translatedRegion = { (int) rControlRegion.Left() - 1, (int) rControlRegion.Top() - 1, (int) rControlRegion.GetWidth() + 2, (int) rControlRegion.GetHeight() + 2 }; - cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, - translatedRegion.width, translatedRegion.height); - cairo_t *cr = cairo_create(surface); + + cairo_t *cr = getCairoContext(); + cairo_translate(cr, translatedRegion.x, translatedRegion.y); gtk_style_context_save(context); gtk_style_context_set_state(context, flags); @@ -963,21 +963,13 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co } cairo_destroy(cr); // unref - renderAreaToPix(surface, &translatedRegion); - cairo_surface_destroy(surface); // unref + queue_draw_area(&translatedRegion); return true; } -void GtkSalGraphics::renderAreaToPix( cairo_surface_t *source, - cairo_rectangle_int_t *region) +void GtkSalGraphics::queue_draw_area(cairo_rectangle_int_t *region) { - cairo_t *cr = getCairoContext(); - cairo_set_source_surface(cr, source, region->x, region->y); - cairo_rectangle(cr, region->x, region->y, region->width, region->height); - cairo_fill(cr); - cairo_destroy(cr); - if (!mpFrame->isDuringRender()) gtk_widget_queue_draw_area(mpFrame->getWindow(), region->x, region->y, region->width, region->height); } |