mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 868259 - Fix BasicCompositor rendering. r=roc
This commit is contained in:
parent
de82bbc24f
commit
5ae991f717
@ -73,7 +73,9 @@ public:
|
||||
|
||||
void SetTransactionIncomplete() { mTransactionIncomplete = true; }
|
||||
|
||||
bool HasShadowTarget() { return !!mShadowTarget; }
|
||||
bool HasShadowTarget() { return !!mShadowTarget; }
|
||||
|
||||
void SetShadowTarget(gfxContext *aTarget) { mShadowTarget = aTarget; }
|
||||
|
||||
bool CompositorMightResample() { return mCompositorMightResample; }
|
||||
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "nsRegion.h"
|
||||
#include "Layers.h"
|
||||
#include "LayerManagerOGL.h"
|
||||
#include "ClientLayerManager.h"
|
||||
#include "mozilla/layers/LayerManagerComposite.h"
|
||||
#include "GLTextureImage.h"
|
||||
#include "mozilla/layers/GLManager.h"
|
||||
@ -1873,6 +1874,9 @@ void
|
||||
nsChildView::PreRender(LayerManager* aManager)
|
||||
{
|
||||
nsAutoPtr<GLManager> manager(GLManager::CreateGLManager(aManager));
|
||||
if (!manager) {
|
||||
return;
|
||||
}
|
||||
NSOpenGLContext *glContext = (NSOpenGLContext *)manager->gl()->GetNativeData(GLContext::NativeGLContext);
|
||||
[(ChildView*)mView preRender:glContext];
|
||||
}
|
||||
@ -2864,6 +2868,10 @@ NSEvent* gLastDragMouseDownEvent = nil;
|
||||
painted = mGeckoChild->PaintWindow(region, aIsAlternate);
|
||||
} else if (mGeckoChild->GetLayerManager()->GetBackendType() == LAYERS_CLIENT) {
|
||||
// We only need this so that we actually get DidPaintWindow fired
|
||||
if (Compositor::GetBackend() == LAYERS_BASIC) {
|
||||
ClientLayerManager *manager = static_cast<ClientLayerManager*>(mGeckoChild->GetLayerManager());
|
||||
manager->SetShadowTarget(targetContext);
|
||||
}
|
||||
painted = mGeckoChild->PaintWindow(region, aIsAlternate);
|
||||
}
|
||||
|
||||
|
@ -2122,7 +2122,8 @@ nsWindow::OnExposeEvent(cairo_t *cr)
|
||||
return TRUE;
|
||||
}
|
||||
// If this widget uses OMTC...
|
||||
if (GetLayerManager()->AsShadowForwarder() && GetLayerManager()->AsShadowForwarder()->HasShadowManager()) {
|
||||
if (GetLayerManager()->AsShadowForwarder() && GetLayerManager()->AsShadowForwarder()->HasShadowManager() &&
|
||||
Compositor::GetBackend() != LAYERS_BASIC) {
|
||||
listener->DidPaintWindow();
|
||||
|
||||
g_free(rects);
|
||||
@ -2194,8 +2195,14 @@ nsWindow::OnExposeEvent(cairo_t *cr)
|
||||
|
||||
bool painted = false;
|
||||
{
|
||||
AutoLayerManagerSetup setupLayerManager(this, ctx, layerBuffering);
|
||||
painted = listener->PaintWindow(this, region, 0);
|
||||
if (GetLayerManager()->GetBackendType() == LAYERS_BASIC) {
|
||||
AutoLayerManagerSetup setupLayerManager(this, ctx, layerBuffering);
|
||||
painted = listener->PaintWindow(this, region, 0);
|
||||
} else if (GetLayerManager()->GetBackendType() == LAYERS_CLIENT) {
|
||||
ClientLayerManager *manager = static_cast<ClientLayerManager*>(GetLayerManager());
|
||||
manager->SetShadowTarget(ctx);
|
||||
painted = listener->PaintWindow(this, region, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MOZ_X11
|
||||
|
@ -875,6 +875,20 @@ void nsBaseWidget::CreateCompositor()
|
||||
CreateCompositor(rect.width, rect.height);
|
||||
}
|
||||
|
||||
mozilla::layers::LayersBackend
|
||||
nsBaseWidget::GetPreferredCompositorBackend()
|
||||
{
|
||||
// We need a separate preference here (instead of using mUseLayersAcceleration)
|
||||
// because we force enable accelerated layers with e10s. Once the BasicCompositor
|
||||
// is stable enough to be used for Ripc/Cipc, then we can remove that and this
|
||||
// pref.
|
||||
if (Preferences::GetBool("layers.offmainthreadcomposition.prefer-basic", false)) {
|
||||
return mozilla::layers::LAYERS_BASIC;
|
||||
}
|
||||
|
||||
return mozilla::layers::LAYERS_OPENGL;
|
||||
}
|
||||
|
||||
void nsBaseWidget::CreateCompositor(int aWidth, int aHeight)
|
||||
{
|
||||
// Recreating this is tricky, as we may still have an old and we need
|
||||
|
@ -337,8 +337,7 @@ protected:
|
||||
|
||||
virtual CompositorChild* GetRemoteRenderer() MOZ_OVERRIDE;
|
||||
|
||||
virtual mozilla::layers::LayersBackend GetPreferredCompositorBackend()
|
||||
{ return mUseLayersAcceleration ? mozilla::layers::LAYERS_OPENGL : mozilla::layers::LAYERS_BASIC; }
|
||||
virtual mozilla::layers::LayersBackend GetPreferredCompositorBackend();
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user