Bug 1958711 - Remove unused BufferMode on FallbackRenderer. r=win-reviewers,handyman
Differential Revision: https://phabricator.services.mozilla.com/D244528
This commit is contained in:
@@ -174,8 +174,6 @@ enum class TextureType : int8_t {
|
|||||||
Last
|
Last
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class BufferMode : int8_t { BUFFER_NONE, BUFFERED };
|
|
||||||
|
|
||||||
enum class DrawRegionClip : int8_t { DRAW, NONE };
|
enum class DrawRegionClip : int8_t { DRAW, NONE };
|
||||||
|
|
||||||
enum class SurfaceMode : int8_t {
|
enum class SurfaceMode : int8_t {
|
||||||
|
|||||||
@@ -76,8 +76,7 @@ bool RenderCompositorSWGL::AllocateMappedBuffer(
|
|||||||
const wr::DeviceIntRect* aOpaqueRects, size_t aNumOpaqueRects) {
|
const wr::DeviceIntRect* aOpaqueRects, size_t aNumOpaqueRects) {
|
||||||
// Request a new draw target to use from the widget...
|
// Request a new draw target to use from the widget...
|
||||||
MOZ_ASSERT(!mDT);
|
MOZ_ASSERT(!mDT);
|
||||||
layers::BufferMode bufferMode = layers::BufferMode::BUFFERED;
|
mDT = mWidget->StartRemoteDrawingInRegion(mDirtyRegion);
|
||||||
mDT = mWidget->StartRemoteDrawingInRegion(mDirtyRegion, &bufferMode);
|
|
||||||
if (!mDT) {
|
if (!mDT) {
|
||||||
gfxCriticalNoteOnce
|
gfxCriticalNoteOnce
|
||||||
<< "RenderCompositorSWGL failed mapping default framebuffer, no dt";
|
<< "RenderCompositorSWGL failed mapping default framebuffer, no dt";
|
||||||
@@ -90,8 +89,7 @@ bool RenderCompositorSWGL::AllocateMappedBuffer(
|
|||||||
gfx::IntSize size;
|
gfx::IntSize size;
|
||||||
int32_t stride = 0;
|
int32_t stride = 0;
|
||||||
gfx::SurfaceFormat format = gfx::SurfaceFormat::UNKNOWN;
|
gfx::SurfaceFormat format = gfx::SurfaceFormat::UNKNOWN;
|
||||||
if (bufferMode != layers::BufferMode::BUFFERED && !mSurface &&
|
if (!mSurface && mDT->LockBits(&data, &size, &stride, &format) &&
|
||||||
mDT->LockBits(&data, &size, &stride, &format) &&
|
|
||||||
(format != gfx::SurfaceFormat::B8G8R8A8 &&
|
(format != gfx::SurfaceFormat::B8G8R8A8 &&
|
||||||
format != gfx::SurfaceFormat::B8G8R8X8)) {
|
format != gfx::SurfaceFormat::B8G8R8X8)) {
|
||||||
// We tried to lock the DT and it succeeded, but the size or format
|
// We tried to lock the DT and it succeeded, but the size or format
|
||||||
|
|||||||
@@ -178,10 +178,8 @@ void WindowRenderer::UpdatePartialPrerenderedAnimations(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FallbackRenderer::SetTarget(gfxContext* aTarget,
|
void FallbackRenderer::SetTarget(gfxContext* aTarget) {
|
||||||
layers::BufferMode aDoubleBuffering) {
|
|
||||||
mTarget = aTarget;
|
mTarget = aTarget;
|
||||||
mBufferMode = aDoubleBuffering;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FallbackRenderer::BeginTransaction(const nsCString& aURL) {
|
bool FallbackRenderer::BeginTransaction(const nsCString& aURL) {
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ class FallbackRenderer : public WindowRenderer {
|
|||||||
public:
|
public:
|
||||||
FallbackRenderer* AsFallback() override { return this; }
|
FallbackRenderer* AsFallback() override { return this; }
|
||||||
|
|
||||||
void SetTarget(gfxContext* aContext, layers::BufferMode aDoubleBuffering);
|
void SetTarget(gfxContext* aContext);
|
||||||
|
|
||||||
bool BeginTransaction(const nsCString& aURL = nsCString()) override;
|
bool BeginTransaction(const nsCString& aURL = nsCString()) override;
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ class FallbackRenderer : public WindowRenderer {
|
|||||||
return layers::LayersBackend::LAYERS_NONE;
|
return layers::LayersBackend::LAYERS_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void GetBackendName(nsAString& name) override {
|
void GetBackendName(nsAString& name) override {
|
||||||
name.AssignLiteral("Fallback");
|
name.AssignLiteral("Fallback");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,8 +266,7 @@ class FallbackRenderer : public WindowRenderer {
|
|||||||
int32_t aAppUnitsPerDevPixel,
|
int32_t aAppUnitsPerDevPixel,
|
||||||
EndTransactionFlags aFlags);
|
EndTransactionFlags aFlags);
|
||||||
|
|
||||||
gfxContext* mTarget;
|
gfxContext* mTarget = nullptr;
|
||||||
layers::BufferMode mBufferMode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
|||||||
@@ -137,8 +137,7 @@ class CompositorWidget {
|
|||||||
*/
|
*/
|
||||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing();
|
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing();
|
||||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
|
||||||
return StartRemoteDrawing();
|
return StartRemoteDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,10 +66,9 @@ InProcessCompositorWidget::StartRemoteDrawing() {
|
|||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget>
|
already_AddRefed<gfx::DrawTarget>
|
||||||
InProcessCompositorWidget::StartRemoteDrawingInRegion(
|
InProcessCompositorWidget::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
|
||||||
CheckWidgetSanity();
|
CheckWidgetSanity();
|
||||||
return mWidget->StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
|
return mWidget->StartRemoteDrawingInRegion(aInvalidRegion);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InProcessCompositorWidget::EndRemoteDrawing() {
|
void InProcessCompositorWidget::EndRemoteDrawing() {
|
||||||
|
|||||||
@@ -14,27 +14,26 @@ namespace widget {
|
|||||||
// nsBaseWidget.
|
// nsBaseWidget.
|
||||||
class InProcessCompositorWidget : public CompositorWidget {
|
class InProcessCompositorWidget : public CompositorWidget {
|
||||||
public:
|
public:
|
||||||
explicit InProcessCompositorWidget(const layers::CompositorOptions& aOptions,
|
InProcessCompositorWidget(const layers::CompositorOptions& aOptions,
|
||||||
nsBaseWidget* aWidget);
|
nsBaseWidget* aWidget);
|
||||||
|
|
||||||
virtual bool PreRender(WidgetRenderingContext* aManager) override;
|
bool PreRender(WidgetRenderingContext* aManager) override;
|
||||||
virtual void PostRender(WidgetRenderingContext* aManager) override;
|
void PostRender(WidgetRenderingContext* aManager) override;
|
||||||
virtual RefPtr<layers::NativeLayerRoot> GetNativeLayerRoot() override;
|
RefPtr<layers::NativeLayerRoot> GetNativeLayerRoot() override;
|
||||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing() override;
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawing() override;
|
||||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
layers::BufferMode* aBufferMode) override;
|
void EndRemoteDrawing() override;
|
||||||
virtual void EndRemoteDrawing() override;
|
void EndRemoteDrawingInRegion(
|
||||||
virtual void EndRemoteDrawingInRegion(
|
|
||||||
gfx::DrawTarget* aDrawTarget,
|
gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
virtual void CleanupRemoteDrawing() override;
|
void CleanupRemoteDrawing() override;
|
||||||
virtual void CleanupWindowEffects() override;
|
void CleanupWindowEffects() override;
|
||||||
virtual bool InitCompositor(layers::Compositor* aCompositor) override;
|
bool InitCompositor(layers::Compositor* aCompositor) override;
|
||||||
virtual LayoutDeviceIntSize GetClientSize() override;
|
LayoutDeviceIntSize GetClientSize() override;
|
||||||
virtual uint32_t GetGLFrameBufferFormat() override;
|
uint32_t GetGLFrameBufferFormat() override;
|
||||||
virtual void ObserveVsync(VsyncObserver* aObserver) override;
|
void ObserveVsync(VsyncObserver* aObserver) override;
|
||||||
virtual uintptr_t GetWidgetKey() override;
|
uintptr_t GetWidgetKey() override;
|
||||||
|
|
||||||
// If you can override this method, inherit from CompositorWidget instead.
|
// If you can override this method, inherit from CompositorWidget instead.
|
||||||
nsIWidget* RealWidget() override;
|
nsIWidget* RealWidget() override;
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ AndroidCompositorWidget::~AndroidCompositorWidget() {
|
|||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget>
|
already_AddRefed<gfx::DrawTarget>
|
||||||
AndroidCompositorWidget::StartRemoteDrawingInRegion(
|
AndroidCompositorWidget::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
|
||||||
if (!mNativeWindow) {
|
if (!mNativeWindow) {
|
||||||
EGLNativeWindowType window = GetEGLNativeWindow();
|
EGLNativeWindowType window = GetEGLNativeWindow();
|
||||||
JNIEnv* const env = jni::GetEnvForThread();
|
JNIEnv* const env = jni::GetEnvForThread();
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ class AndroidCompositorWidget : public CompositorWidget {
|
|||||||
// CompositorWidget overrides
|
// CompositorWidget overrides
|
||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
layers::BufferMode* aBufferMode) override;
|
|
||||||
void EndRemoteDrawingInRegion(
|
void EndRemoteDrawingInRegion(
|
||||||
gfx::DrawTarget* aDrawTarget,
|
gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
|
|||||||
@@ -1310,7 +1310,7 @@ bool nsChildView::PaintWindowInDrawTarget(gfx::DrawTarget* aDT,
|
|||||||
nsAutoRetainCocoaObject kungFuDeathGrip(mView);
|
nsAutoRetainCocoaObject kungFuDeathGrip(mView);
|
||||||
if (GetWindowRenderer()->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
if (GetWindowRenderer()->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
||||||
nsBaseWidget::AutoLayerManagerSetup setupLayerManager(
|
nsBaseWidget::AutoLayerManagerSetup setupLayerManager(
|
||||||
this, &targetContext, BufferMode::BUFFER_NONE);
|
this, &targetContext);
|
||||||
return PaintWindow(aRegion);
|
return PaintWindow(aRegion);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -71,9 +71,8 @@ void GtkCompositorWidget::EndRemoteDrawing() {}
|
|||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget>
|
already_AddRefed<gfx::DrawTarget>
|
||||||
GtkCompositorWidget::StartRemoteDrawingInRegion(
|
GtkCompositorWidget::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
return mProvider.StartRemoteDrawingInRegion(aInvalidRegion);
|
||||||
return mProvider.StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GtkCompositorWidget::EndRemoteDrawingInRegion(
|
void GtkCompositorWidget::EndRemoteDrawingInRegion(
|
||||||
|
|||||||
@@ -56,8 +56,7 @@ class GtkCompositorWidget : public CompositorWidget,
|
|||||||
void EndRemoteDrawing() override;
|
void EndRemoteDrawing() override;
|
||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
layers::BufferMode* aBufferMode) override;
|
|
||||||
void EndRemoteDrawingInRegion(
|
void EndRemoteDrawingInRegion(
|
||||||
gfx::DrawTarget* aDrawTarget,
|
gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
|
|||||||
@@ -153,8 +153,7 @@ MOZ_PUSH_IGNORE_THREAD_SAFETY
|
|||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget>
|
already_AddRefed<gfx::DrawTarget>
|
||||||
WindowSurfaceProvider::StartRemoteDrawingInRegion(
|
WindowSurfaceProvider::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
|
||||||
if (aInvalidRegion.IsEmpty()) {
|
if (aInvalidRegion.IsEmpty()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -179,7 +178,6 @@ WindowSurfaceProvider::StartRemoteDrawingInRegion(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*aBufferMode = BufferMode::BUFFER_NONE;
|
|
||||||
RefPtr<gfx::DrawTarget> dt = mWindowSurface->Lock(aInvalidRegion);
|
RefPtr<gfx::DrawTarget> dt = mWindowSurface->Lock(aInvalidRegion);
|
||||||
#ifdef MOZ_X11
|
#ifdef MOZ_X11
|
||||||
if (!dt && GdkIsX11Display() && !mWindowSurface->IsFallback()) {
|
if (!dt && GdkIsX11Display() && !mWindowSurface->IsFallback()) {
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ class WindowSurfaceProvider final {
|
|||||||
void CleanupResources();
|
void CleanupResources();
|
||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion);
|
||||||
layers::BufferMode* aBufferMode);
|
|
||||||
void EndRemoteDrawingInRegion(gfx::DrawTarget* aDrawTarget,
|
void EndRemoteDrawingInRegion(gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion);
|
const LayoutDeviceIntRegion& aInvalidRegion);
|
||||||
|
|
||||||
|
|||||||
@@ -3989,8 +3989,7 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferMode layerBuffering = BufferMode::BUFFERED;
|
RefPtr<DrawTarget> dt = StartRemoteDrawingInRegion(region);
|
||||||
RefPtr<DrawTarget> dt = StartRemoteDrawingInRegion(region, &layerBuffering);
|
|
||||||
if (!dt || !dt->IsValid()) {
|
if (!dt || !dt->IsValid()) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -4022,14 +4021,13 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) {
|
|||||||
{
|
{
|
||||||
if (renderer->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
if (renderer->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
||||||
if (GetTransparencyMode() == TransparencyMode::Transparent &&
|
if (GetTransparencyMode() == TransparencyMode::Transparent &&
|
||||||
layerBuffering == BufferMode::BUFFER_NONE && mHasAlphaVisual) {
|
mHasAlphaVisual) {
|
||||||
// If our draw target is unbuffered and we use an alpha channel,
|
// If our draw target is unbuffered and we use an alpha channel,
|
||||||
// clear the image beforehand to ensure we don't get artifacts from a
|
// clear the image beforehand to ensure we don't get artifacts from a
|
||||||
// reused SHM image. See bug 1258086.
|
// reused SHM image. See bug 1258086.
|
||||||
dt->ClearRect(Rect(boundsRect));
|
dt->ClearRect(Rect(boundsRect));
|
||||||
}
|
}
|
||||||
AutoLayerManagerSetup setupLayerManager(
|
AutoLayerManagerSetup setupLayerManager(this, ctx.ptrOr(nullptr));
|
||||||
this, ctx.isNothing() ? nullptr : &ctx.ref(), layerBuffering);
|
|
||||||
listener->PaintWindow(this, region);
|
listener->PaintWindow(this, region);
|
||||||
|
|
||||||
// Re-get the listener since the will paint notification might have
|
// Re-get the listener since the will paint notification might have
|
||||||
@@ -8679,9 +8677,8 @@ bool nsWindow::GetEditCommands(NativeKeyBindingsType aType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<DrawTarget> nsWindow::StartRemoteDrawingInRegion(
|
already_AddRefed<DrawTarget> nsWindow::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion, BufferMode* aBufferMode) {
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
return mSurfaceProvider.StartRemoteDrawingInRegion(aInvalidRegion,
|
return mSurfaceProvider.StartRemoteDrawingInRegion(aInvalidRegion);
|
||||||
aBufferMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void nsWindow::EndRemoteDrawingInRegion(
|
void nsWindow::EndRemoteDrawingInRegion(
|
||||||
|
|||||||
@@ -303,8 +303,7 @@ class nsWindow final : public nsBaseWidget {
|
|||||||
LayoutDeviceIntRegion GetOpaqueRegion() const;
|
LayoutDeviceIntRegion GetOpaqueRegion() const;
|
||||||
|
|
||||||
already_AddRefed<mozilla::gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<mozilla::gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
mozilla::layers::BufferMode* aBufferMode) override;
|
|
||||||
void EndRemoteDrawingInRegion(
|
void EndRemoteDrawingInRegion(
|
||||||
mozilla::gfx::DrawTarget* aDrawTarget,
|
mozilla::gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
|
|||||||
@@ -938,18 +938,18 @@ nsresult nsBaseWidget::MakeFullScreen(bool aFullScreen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsBaseWidget::AutoLayerManagerSetup::AutoLayerManagerSetup(
|
nsBaseWidget::AutoLayerManagerSetup::AutoLayerManagerSetup(
|
||||||
nsBaseWidget* aWidget, gfxContext* aTarget, BufferMode aDoubleBuffering)
|
nsBaseWidget* aWidget, gfxContext* aTarget)
|
||||||
: mWidget(aWidget) {
|
: mWidget(aWidget) {
|
||||||
WindowRenderer* renderer = mWidget->GetWindowRenderer();
|
WindowRenderer* renderer = mWidget->GetWindowRenderer();
|
||||||
if (renderer->AsFallback()) {
|
if (auto* fallback = renderer->AsFallback()) {
|
||||||
mRenderer = renderer->AsFallback();
|
mRenderer = fallback;
|
||||||
mRenderer->SetTarget(aTarget, aDoubleBuffering);
|
mRenderer->SetTarget(aTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nsBaseWidget::AutoLayerManagerSetup::~AutoLayerManagerSetup() {
|
nsBaseWidget::AutoLayerManagerSetup::~AutoLayerManagerSetup() {
|
||||||
if (mRenderer) {
|
if (mRenderer) {
|
||||||
mRenderer->SetTarget(nullptr, mozilla::layers::BufferMode::BUFFER_NONE);
|
mRenderer->SetTarget(nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,6 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
|
|||||||
typedef base::Thread Thread;
|
typedef base::Thread Thread;
|
||||||
typedef mozilla::gfx::DrawTarget DrawTarget;
|
typedef mozilla::gfx::DrawTarget DrawTarget;
|
||||||
typedef mozilla::gfx::SourceSurface SourceSurface;
|
typedef mozilla::gfx::SourceSurface SourceSurface;
|
||||||
typedef mozilla::layers::BufferMode BufferMode;
|
|
||||||
typedef mozilla::layers::CompositorBridgeChild CompositorBridgeChild;
|
typedef mozilla::layers::CompositorBridgeChild CompositorBridgeChild;
|
||||||
typedef mozilla::layers::CompositorBridgeParent CompositorBridgeParent;
|
typedef mozilla::layers::CompositorBridgeParent CompositorBridgeParent;
|
||||||
typedef mozilla::layers::IAPZCTreeManager IAPZCTreeManager;
|
typedef mozilla::layers::IAPZCTreeManager IAPZCTreeManager;
|
||||||
@@ -385,8 +384,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
|
|||||||
*/
|
*/
|
||||||
class AutoLayerManagerSetup {
|
class AutoLayerManagerSetup {
|
||||||
public:
|
public:
|
||||||
AutoLayerManagerSetup(nsBaseWidget* aWidget, gfxContext* aTarget,
|
AutoLayerManagerSetup(nsBaseWidget* aWidget, gfxContext* aTarget);
|
||||||
BufferMode aDoubleBuffering);
|
|
||||||
~AutoLayerManagerSetup();
|
~AutoLayerManagerSetup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -435,7 +433,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
|
|||||||
}
|
}
|
||||||
virtual already_AddRefed<DrawTarget> StartRemoteDrawing();
|
virtual already_AddRefed<DrawTarget> StartRemoteDrawing();
|
||||||
virtual already_AddRefed<DrawTarget> StartRemoteDrawingInRegion(
|
virtual already_AddRefed<DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion, BufferMode* aBufferMode) {
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
return StartRemoteDrawing();
|
return StartRemoteDrawing();
|
||||||
}
|
}
|
||||||
virtual void EndRemoteDrawing() {}
|
virtual void EndRemoteDrawing() {}
|
||||||
|
|||||||
@@ -70,15 +70,8 @@ LayoutDeviceIntSize CompositorWidgetParent::GetClientSize() {
|
|||||||
|
|
||||||
already_AddRefed<gfx::DrawTarget>
|
already_AddRefed<gfx::DrawTarget>
|
||||||
CompositorWidgetParent::StartRemoteDrawingInRegion(
|
CompositorWidgetParent::StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||||
layers::BufferMode* aBufferMode) {
|
|
||||||
MOZ_ASSERT(mRemoteBackbufferClient);
|
MOZ_ASSERT(mRemoteBackbufferClient);
|
||||||
MOZ_ASSERT(aBufferMode);
|
|
||||||
|
|
||||||
// Because we use remote backbuffering, there is no need to use a local
|
|
||||||
// backbuffer too.
|
|
||||||
(*aBufferMode) = layers::BufferMode::BUFFER_NONE;
|
|
||||||
|
|
||||||
return mRemoteBackbufferClient->BorrowDrawTarget();
|
return mRemoteBackbufferClient->BorrowDrawTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ class CompositorWidgetParent final : public PCompositorWidgetParent,
|
|||||||
bool PreRender(WidgetRenderingContext*) override;
|
bool PreRender(WidgetRenderingContext*) override;
|
||||||
void PostRender(WidgetRenderingContext*) override;
|
void PostRender(WidgetRenderingContext*) override;
|
||||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
layers::BufferMode* aBufferMode) override;
|
|
||||||
void EndRemoteDrawingInRegion(
|
void EndRemoteDrawingInRegion(
|
||||||
gfx::DrawTarget* aDrawTarget,
|
gfx::DrawTarget* aDrawTarget,
|
||||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||||
|
|||||||
@@ -258,25 +258,16 @@ bool nsWindow::OnPaint(uint32_t aNestingLevel) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't need to double buffer with anything but GDI
|
if (mTransparencyMode == TransparencyMode::Transparent) {
|
||||||
BufferMode doubleBuffering = mozilla::layers::BufferMode::BUFFER_NONE;
|
// If we're rendering with translucency, we're going to be
|
||||||
switch (mTransparencyMode) {
|
// rendering the whole window; make sure we clear it first
|
||||||
case TransparencyMode::Transparent:
|
dt->ClearRect(Rect(dt->GetRect()));
|
||||||
// If we're rendering with translucency, we're going to be
|
|
||||||
// rendering the whole window; make sure we clear it first
|
|
||||||
dt->ClearRect(Rect(dt->GetRect()));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// If we're not doing translucency, then double buffer
|
|
||||||
doubleBuffering = mozilla::layers::BufferMode::BUFFERED;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gfxContext thebesContext(dt);
|
gfxContext thebesContext(dt);
|
||||||
|
|
||||||
{
|
{
|
||||||
AutoLayerManagerSetup setupLayerManager(this, &thebesContext,
|
AutoLayerManagerSetup setupLayerManager(this, &thebesContext);
|
||||||
doubleBuffering);
|
|
||||||
if (nsIWidgetListener* listener = GetPaintListener()) {
|
if (nsIWidgetListener* listener = GetPaintListener()) {
|
||||||
result = listener->PaintWindow(this, region);
|
result = listener->PaintWindow(this, region);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user