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 #if 1 // if (_renderer) { // vgScale(width, height); // } #else // 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)); vgLoadIdentity(); // Allow drawing everywhere by default InvalidatedRanges ranges; ranges.setWorld(); _renderer->set_invalidated_regions(ranges); renderer::EGLDevice *egl = (renderer::EGLDevice*)_device.get(); egl->swapBuffers(); #endif }
void MovieTester::render() { // Get invalidated ranges and cache them _invalidatedBounds.setNull(); _movie_root->add_invalidated_bounds(_invalidatedBounds, false); #ifdef SHOW_INVALIDATED_BOUNDS_ON_ADVANCE const MovieClip* r = getRootMovie(); std::cout << "frame " << r->get_current_frame() << ") Invalidated bounds " << _invalidatedBounds << std::endl; #endif // Force full redraw by using a WORLD invalidated ranges InvalidatedRanges ranges = _invalidatedBounds; if ( _forceRedraw ) { ranges.setWorld(); // set to world if asked a full redraw _forceRedraw = false; // reset to no forced redraw } for (TestingRenderers::const_iterator it=_testingRenderers.begin(), itE=_testingRenderers.end(); it != itE; ++it) { const TestingRenderer& rend = *it; render(rend.getRenderer(), ranges); } if ( _testingRenderers.empty() ) { // Make sure display is called in any case // // What we're particularly interested about is // proper computation of invalidated bounds, which // needs clear_invalidated() to be called. // display() will call clear_invalidated() on DisplayObjects // actually modified so we're fine with that. // // Directly calling _movie->clear_invalidated() here // also work currently, as invalidating the topmost // movie will force recomputation of all invalidated // bounds. Still, possible future changes might // introduce differences, so better to reproduce // real runs as close as possible, by calling display(). // _movie_root->display(); } }