Bug 1958711 - Remove unused BufferMode on FallbackRenderer. r=win-reviewers,handyman

Differential Revision: https://phabricator.services.mozilla.com/D244528
This commit is contained in:
Emilio Cobos Álvarez
2025-04-07 20:36:21 +00:00
parent 495d6990d4
commit 4c42399f22
21 changed files with 54 additions and 94 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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();
} }

View File

@@ -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() {

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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(

View File

@@ -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;

View File

@@ -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()) {

View File

@@ -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);

View File

@@ -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(

View File

@@ -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;

View File

@@ -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);
} }
} }

View File

@@ -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() {}

View File

@@ -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();
} }

View File

@@ -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;

View File

@@ -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);
} }