From c4915de8bb9454b8f10b0c9b7ac21e2bb7f65202 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 13 Aug 2009 19:08:00 -0700 Subject: fix a bug that could cause a window to be hidden in some cases. this would happen is the window is made visible but the client didn't render yet into it. This happens often with SurfaceView. Instead of filling the window with solid black, SF would simply ignore it which could lead to more disturbing artifacts. in theory the window manager should not display a window before it has been drawn into, but it does happen occasionnaly. --- libs/surfaceflinger/Layer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libs/surfaceflinger/Layer.cpp') diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index ac4bf7b..6f92515 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -596,7 +596,12 @@ Region Layer::post(uint32_t* previousSate, bool& recomputeVisibleRegions) Point Layer::getPhysicalSize() const { sp front(frontBuffer().getBuffer()); - return Point(front->getWidth(), front->getHeight()); + Point size(front->getWidth(), front->getHeight()); + if ((size.x | size.y) == 0) { + // if we don't have a buffer yet, just use the state's size. + size = LayerBase::getPhysicalSize(); + } + return size; } void Layer::unlockPageFlip( -- cgit v1.1