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
This commit is contained in:
@@ -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 );
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user