From fb2b8194c27a904d5488dfc30ca67a6f43b7e25c Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Tue, 12 Dec 2006 00:59:23 +0000 Subject: [PATCH] Moved GLRenderer instanciation at window attachment time, not GLView creation time. Hardware GLRenderers will surely needs to check which screen device (so which window) a GLView beg him to render to as fast as possible. Unless such hardware is not serving this screen... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19464 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/opengl/GLRenderer.h | 6 ------ src/kits/opengl/GLRenderer.cpp | 23 ----------------------- src/kits/opengl/GLView.cpp | 17 +++++------------ 3 files changed, 5 insertions(+), 41 deletions(-) diff --git a/headers/os/opengl/GLRenderer.h b/headers/os/opengl/GLRenderer.h index f1f2b60efe..698ca31efc 100644 --- a/headers/os/opengl/GLRenderer.h +++ b/headers/os/opengl/GLRenderer.h @@ -35,12 +35,6 @@ public: virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest); virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest); - - virtual void AttachedToWindow(); - virtual void AllAttached(); - virtual void DetachedFromWindow(); - virtual void AllDetached(); - virtual void FrameResized(float width, float height); void DirectConnected( direct_buffer_info *info ); diff --git a/src/kits/opengl/GLRenderer.cpp b/src/kits/opengl/GLRenderer.cpp index 7c892b4b87..ef1add3ad0 100644 --- a/src/kits/opengl/GLRenderer.cpp +++ b/src/kits/opengl/GLRenderer.cpp @@ -78,29 +78,6 @@ BGLRenderer::CopyPixelsIn(BBitmap *source, BPoint dest) } -void -BGLRenderer::AttachedToWindow() -{ -} - - -void -BGLRenderer::AllAttached() -{ -} - - -void -BGLRenderer::DetachedFromWindow() -{ -} - - -void -BGLRenderer::AllDetached() -{ -} - void BGLRenderer::FrameResized(float width, float height) diff --git a/src/kits/opengl/GLView.cpp b/src/kits/opengl/GLView.cpp index f01219891a..30ebba8b41 100644 --- a/src/kits/opengl/GLView.cpp +++ b/src/kits/opengl/GLView.cpp @@ -35,10 +35,6 @@ BGLView::BGLView(BRect rect, char *name, ulong resizingMode, ulong mode, ulong o fRenderer(NULL) { fRoster = new GLRendererRoster(this, options); - fRenderer = fRoster->GetRenderer(); - if (!fRenderer) { - fprintf(stderr, "no renderer found! \n"); - } } @@ -129,10 +125,10 @@ void BGLView::AttachedToWindow() { BView::AttachedToWindow(); + fRenderer = fRoster->GetRenderer(); if (fRenderer) { // Don't paint white window background when resized SetViewColor(B_TRANSPARENT_32_BIT); - fRenderer->AttachedToWindow(); // Set default OpenGL viewport: glViewport(0, 0, Bounds().IntegerWidth(), Bounds().IntegerHeight()); @@ -140,6 +136,8 @@ void BGLView::AttachedToWindow() return; } + fprintf(stderr, "no renderer found! \n"); + // No Renderer, no rendering. Setup a minimal "No Renderer" string drawing context SetFont(be_bold_font); // SetFontSize(16); @@ -148,24 +146,19 @@ void BGLView::AttachedToWindow() void BGLView::AllAttached() { BView::AllAttached(); - - if (fRenderer) - fRenderer->AllAttached(); } void BGLView::DetachedFromWindow() { if (fRenderer) - fRenderer->DetachedFromWindow(); + fRenderer->Release(); + fRenderer = NULL; BView::DetachedFromWindow(); } void BGLView::AllDetached() { - if (fRenderer) - fRenderer->AllDetached(); - BView::AllDetached(); }