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
|
||||
};
|
||||
|
||||
enum class BufferMode : int8_t { BUFFER_NONE, BUFFERED };
|
||||
|
||||
enum class DrawRegionClip : int8_t { DRAW, NONE };
|
||||
|
||||
enum class SurfaceMode : int8_t {
|
||||
|
||||
@@ -76,8 +76,7 @@ bool RenderCompositorSWGL::AllocateMappedBuffer(
|
||||
const wr::DeviceIntRect* aOpaqueRects, size_t aNumOpaqueRects) {
|
||||
// Request a new draw target to use from the widget...
|
||||
MOZ_ASSERT(!mDT);
|
||||
layers::BufferMode bufferMode = layers::BufferMode::BUFFERED;
|
||||
mDT = mWidget->StartRemoteDrawingInRegion(mDirtyRegion, &bufferMode);
|
||||
mDT = mWidget->StartRemoteDrawingInRegion(mDirtyRegion);
|
||||
if (!mDT) {
|
||||
gfxCriticalNoteOnce
|
||||
<< "RenderCompositorSWGL failed mapping default framebuffer, no dt";
|
||||
@@ -90,8 +89,7 @@ bool RenderCompositorSWGL::AllocateMappedBuffer(
|
||||
gfx::IntSize size;
|
||||
int32_t stride = 0;
|
||||
gfx::SurfaceFormat format = gfx::SurfaceFormat::UNKNOWN;
|
||||
if (bufferMode != layers::BufferMode::BUFFERED && !mSurface &&
|
||||
mDT->LockBits(&data, &size, &stride, &format) &&
|
||||
if (!mSurface && mDT->LockBits(&data, &size, &stride, &format) &&
|
||||
(format != gfx::SurfaceFormat::B8G8R8A8 &&
|
||||
format != gfx::SurfaceFormat::B8G8R8X8)) {
|
||||
// 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,
|
||||
layers::BufferMode aDoubleBuffering) {
|
||||
void FallbackRenderer::SetTarget(gfxContext* aTarget) {
|
||||
mTarget = aTarget;
|
||||
mBufferMode = aDoubleBuffering;
|
||||
}
|
||||
|
||||
bool FallbackRenderer::BeginTransaction(const nsCString& aURL) {
|
||||
|
||||
@@ -243,7 +243,7 @@ class FallbackRenderer : public WindowRenderer {
|
||||
public:
|
||||
FallbackRenderer* AsFallback() override { return this; }
|
||||
|
||||
void SetTarget(gfxContext* aContext, layers::BufferMode aDoubleBuffering);
|
||||
void SetTarget(gfxContext* aContext);
|
||||
|
||||
bool BeginTransaction(const nsCString& aURL = nsCString()) override;
|
||||
|
||||
@@ -255,7 +255,7 @@ class FallbackRenderer : public WindowRenderer {
|
||||
return layers::LayersBackend::LAYERS_NONE;
|
||||
}
|
||||
|
||||
virtual void GetBackendName(nsAString& name) override {
|
||||
void GetBackendName(nsAString& name) override {
|
||||
name.AssignLiteral("Fallback");
|
||||
}
|
||||
|
||||
@@ -266,8 +266,7 @@ class FallbackRenderer : public WindowRenderer {
|
||||
int32_t aAppUnitsPerDevPixel,
|
||||
EndTransactionFlags aFlags);
|
||||
|
||||
gfxContext* mTarget;
|
||||
layers::BufferMode mBufferMode;
|
||||
gfxContext* mTarget = nullptr;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
@@ -137,8 +137,7 @@ class CompositorWidget {
|
||||
*/
|
||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing();
|
||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
return StartRemoteDrawing();
|
||||
}
|
||||
|
||||
|
||||
@@ -66,10 +66,9 @@ InProcessCompositorWidget::StartRemoteDrawing() {
|
||||
|
||||
already_AddRefed<gfx::DrawTarget>
|
||||
InProcessCompositorWidget::StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
CheckWidgetSanity();
|
||||
return mWidget->StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
|
||||
return mWidget->StartRemoteDrawingInRegion(aInvalidRegion);
|
||||
}
|
||||
|
||||
void InProcessCompositorWidget::EndRemoteDrawing() {
|
||||
|
||||
@@ -14,27 +14,26 @@ namespace widget {
|
||||
// nsBaseWidget.
|
||||
class InProcessCompositorWidget : public CompositorWidget {
|
||||
public:
|
||||
explicit InProcessCompositorWidget(const layers::CompositorOptions& aOptions,
|
||||
nsBaseWidget* aWidget);
|
||||
InProcessCompositorWidget(const layers::CompositorOptions& aOptions,
|
||||
nsBaseWidget* aWidget);
|
||||
|
||||
virtual bool PreRender(WidgetRenderingContext* aManager) override;
|
||||
virtual void PostRender(WidgetRenderingContext* aManager) override;
|
||||
virtual RefPtr<layers::NativeLayerRoot> GetNativeLayerRoot() override;
|
||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing() override;
|
||||
virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) override;
|
||||
virtual void EndRemoteDrawing() override;
|
||||
virtual void EndRemoteDrawingInRegion(
|
||||
bool PreRender(WidgetRenderingContext* aManager) override;
|
||||
void PostRender(WidgetRenderingContext* aManager) override;
|
||||
RefPtr<layers::NativeLayerRoot> GetNativeLayerRoot() override;
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawing() override;
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
void EndRemoteDrawing() override;
|
||||
void EndRemoteDrawingInRegion(
|
||||
gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
virtual void CleanupRemoteDrawing() override;
|
||||
virtual void CleanupWindowEffects() override;
|
||||
virtual bool InitCompositor(layers::Compositor* aCompositor) override;
|
||||
virtual LayoutDeviceIntSize GetClientSize() override;
|
||||
virtual uint32_t GetGLFrameBufferFormat() override;
|
||||
virtual void ObserveVsync(VsyncObserver* aObserver) override;
|
||||
virtual uintptr_t GetWidgetKey() override;
|
||||
void CleanupRemoteDrawing() override;
|
||||
void CleanupWindowEffects() override;
|
||||
bool InitCompositor(layers::Compositor* aCompositor) override;
|
||||
LayoutDeviceIntSize GetClientSize() override;
|
||||
uint32_t GetGLFrameBufferFormat() override;
|
||||
void ObserveVsync(VsyncObserver* aObserver) override;
|
||||
uintptr_t GetWidgetKey() override;
|
||||
|
||||
// If you can override this method, inherit from CompositorWidget instead.
|
||||
nsIWidget* RealWidget() override;
|
||||
|
||||
@@ -30,8 +30,7 @@ AndroidCompositorWidget::~AndroidCompositorWidget() {
|
||||
|
||||
already_AddRefed<gfx::DrawTarget>
|
||||
AndroidCompositorWidget::StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
if (!mNativeWindow) {
|
||||
EGLNativeWindowType window = GetEGLNativeWindow();
|
||||
JNIEnv* const env = jni::GetEnvForThread();
|
||||
|
||||
@@ -37,8 +37,7 @@ class AndroidCompositorWidget : public CompositorWidget {
|
||||
// CompositorWidget overrides
|
||||
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) override;
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
void EndRemoteDrawingInRegion(
|
||||
gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
|
||||
@@ -1310,7 +1310,7 @@ bool nsChildView::PaintWindowInDrawTarget(gfx::DrawTarget* aDT,
|
||||
nsAutoRetainCocoaObject kungFuDeathGrip(mView);
|
||||
if (GetWindowRenderer()->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
||||
nsBaseWidget::AutoLayerManagerSetup setupLayerManager(
|
||||
this, &targetContext, BufferMode::BUFFER_NONE);
|
||||
this, &targetContext);
|
||||
return PaintWindow(aRegion);
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -71,9 +71,8 @@ void GtkCompositorWidget::EndRemoteDrawing() {}
|
||||
|
||||
already_AddRefed<gfx::DrawTarget>
|
||||
GtkCompositorWidget::StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
return mProvider.StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
return mProvider.StartRemoteDrawingInRegion(aInvalidRegion);
|
||||
}
|
||||
|
||||
void GtkCompositorWidget::EndRemoteDrawingInRegion(
|
||||
|
||||
@@ -56,8 +56,7 @@ class GtkCompositorWidget : public CompositorWidget,
|
||||
void EndRemoteDrawing() override;
|
||||
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) override;
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
void EndRemoteDrawingInRegion(
|
||||
gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
|
||||
@@ -153,8 +153,7 @@ MOZ_PUSH_IGNORE_THREAD_SAFETY
|
||||
|
||||
already_AddRefed<gfx::DrawTarget>
|
||||
WindowSurfaceProvider::StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
if (aInvalidRegion.IsEmpty()) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -179,7 +178,6 @@ WindowSurfaceProvider::StartRemoteDrawingInRegion(
|
||||
}
|
||||
}
|
||||
|
||||
*aBufferMode = BufferMode::BUFFER_NONE;
|
||||
RefPtr<gfx::DrawTarget> dt = mWindowSurface->Lock(aInvalidRegion);
|
||||
#ifdef MOZ_X11
|
||||
if (!dt && GdkIsX11Display() && !mWindowSurface->IsFallback()) {
|
||||
|
||||
@@ -61,8 +61,7 @@ class WindowSurfaceProvider final {
|
||||
void CleanupResources();
|
||||
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode);
|
||||
const LayoutDeviceIntRegion& aInvalidRegion);
|
||||
void EndRemoteDrawingInRegion(gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion);
|
||||
|
||||
|
||||
@@ -3989,8 +3989,7 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BufferMode layerBuffering = BufferMode::BUFFERED;
|
||||
RefPtr<DrawTarget> dt = StartRemoteDrawingInRegion(region, &layerBuffering);
|
||||
RefPtr<DrawTarget> dt = StartRemoteDrawingInRegion(region);
|
||||
if (!dt || !dt->IsValid()) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -4022,14 +4021,13 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) {
|
||||
{
|
||||
if (renderer->GetBackendType() == LayersBackend::LAYERS_NONE) {
|
||||
if (GetTransparencyMode() == TransparencyMode::Transparent &&
|
||||
layerBuffering == BufferMode::BUFFER_NONE && mHasAlphaVisual) {
|
||||
mHasAlphaVisual) {
|
||||
// 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
|
||||
// reused SHM image. See bug 1258086.
|
||||
dt->ClearRect(Rect(boundsRect));
|
||||
}
|
||||
AutoLayerManagerSetup setupLayerManager(
|
||||
this, ctx.isNothing() ? nullptr : &ctx.ref(), layerBuffering);
|
||||
AutoLayerManagerSetup setupLayerManager(this, ctx.ptrOr(nullptr));
|
||||
listener->PaintWindow(this, region);
|
||||
|
||||
// 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(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion, BufferMode* aBufferMode) {
|
||||
return mSurfaceProvider.StartRemoteDrawingInRegion(aInvalidRegion,
|
||||
aBufferMode);
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
return mSurfaceProvider.StartRemoteDrawingInRegion(aInvalidRegion);
|
||||
}
|
||||
|
||||
void nsWindow::EndRemoteDrawingInRegion(
|
||||
|
||||
@@ -303,8 +303,7 @@ class nsWindow final : public nsBaseWidget {
|
||||
LayoutDeviceIntRegion GetOpaqueRegion() const;
|
||||
|
||||
already_AddRefed<mozilla::gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
mozilla::layers::BufferMode* aBufferMode) override;
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
void EndRemoteDrawingInRegion(
|
||||
mozilla::gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
|
||||
@@ -938,18 +938,18 @@ nsresult nsBaseWidget::MakeFullScreen(bool aFullScreen) {
|
||||
}
|
||||
|
||||
nsBaseWidget::AutoLayerManagerSetup::AutoLayerManagerSetup(
|
||||
nsBaseWidget* aWidget, gfxContext* aTarget, BufferMode aDoubleBuffering)
|
||||
nsBaseWidget* aWidget, gfxContext* aTarget)
|
||||
: mWidget(aWidget) {
|
||||
WindowRenderer* renderer = mWidget->GetWindowRenderer();
|
||||
if (renderer->AsFallback()) {
|
||||
mRenderer = renderer->AsFallback();
|
||||
mRenderer->SetTarget(aTarget, aDoubleBuffering);
|
||||
if (auto* fallback = renderer->AsFallback()) {
|
||||
mRenderer = fallback;
|
||||
mRenderer->SetTarget(aTarget);
|
||||
}
|
||||
}
|
||||
|
||||
nsBaseWidget::AutoLayerManagerSetup::~AutoLayerManagerSetup() {
|
||||
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 mozilla::gfx::DrawTarget DrawTarget;
|
||||
typedef mozilla::gfx::SourceSurface SourceSurface;
|
||||
typedef mozilla::layers::BufferMode BufferMode;
|
||||
typedef mozilla::layers::CompositorBridgeChild CompositorBridgeChild;
|
||||
typedef mozilla::layers::CompositorBridgeParent CompositorBridgeParent;
|
||||
typedef mozilla::layers::IAPZCTreeManager IAPZCTreeManager;
|
||||
@@ -385,8 +384,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
|
||||
*/
|
||||
class AutoLayerManagerSetup {
|
||||
public:
|
||||
AutoLayerManagerSetup(nsBaseWidget* aWidget, gfxContext* aTarget,
|
||||
BufferMode aDoubleBuffering);
|
||||
AutoLayerManagerSetup(nsBaseWidget* aWidget, gfxContext* aTarget);
|
||||
~AutoLayerManagerSetup();
|
||||
|
||||
private:
|
||||
@@ -435,7 +433,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
|
||||
}
|
||||
virtual already_AddRefed<DrawTarget> StartRemoteDrawing();
|
||||
virtual already_AddRefed<DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion, BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
return StartRemoteDrawing();
|
||||
}
|
||||
virtual void EndRemoteDrawing() {}
|
||||
|
||||
@@ -70,15 +70,8 @@ LayoutDeviceIntSize CompositorWidgetParent::GetClientSize() {
|
||||
|
||||
already_AddRefed<gfx::DrawTarget>
|
||||
CompositorWidgetParent::StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) {
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) {
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -31,8 +31,7 @@ class CompositorWidgetParent final : public PCompositorWidgetParent,
|
||||
bool PreRender(WidgetRenderingContext*) override;
|
||||
void PostRender(WidgetRenderingContext*) override;
|
||||
already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
|
||||
const LayoutDeviceIntRegion& aInvalidRegion,
|
||||
layers::BufferMode* aBufferMode) override;
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
void EndRemoteDrawingInRegion(
|
||||
gfx::DrawTarget* aDrawTarget,
|
||||
const LayoutDeviceIntRegion& aInvalidRegion) override;
|
||||
|
||||
@@ -258,25 +258,16 @@ bool nsWindow::OnPaint(uint32_t aNestingLevel) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// don't need to double buffer with anything but GDI
|
||||
BufferMode doubleBuffering = mozilla::layers::BufferMode::BUFFER_NONE;
|
||||
switch (mTransparencyMode) {
|
||||
case TransparencyMode::Transparent:
|
||||
// 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;
|
||||
if (mTransparencyMode == TransparencyMode::Transparent) {
|
||||
// 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()));
|
||||
}
|
||||
|
||||
gfxContext thebesContext(dt);
|
||||
|
||||
{
|
||||
AutoLayerManagerSetup setupLayerManager(this, &thebesContext,
|
||||
doubleBuffering);
|
||||
AutoLayerManagerSetup setupLayerManager(this, &thebesContext);
|
||||
if (nsIWidgetListener* listener = GetPaintListener()) {
|
||||
result = listener->PaintWindow(this, region);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user