summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-10-25 13:38:15 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-10-25 13:38:15 -0700
commite1ca532d72cbfacdce794f8bb4d439e609ec9871 (patch)
treebec56dd52b65c46d7a28dcbfeb8955412b0d80a5 /services/surfaceflinger
parentb4645353090f1bdd5cc1d4ab98feac7ccf966368 (diff)
parent457bed2bc6561dd67429dde238453fee8602fa9b (diff)
downloadframeworks_base-e1ca532d72cbfacdce794f8bb4d439e609ec9871.zip
frameworks_base-e1ca532d72cbfacdce794f8bb4d439e609ec9871.tar.gz
frameworks_base-e1ca532d72cbfacdce794f8bb4d439e609ec9871.tar.bz2
am 457bed2b: Merge "fix [3123221] Video sticks playing back upside down following orientation switch" into gingerbread
Merge commit '457bed2bc6561dd67429dde238453fee8602fa9b' into gingerbread-plus-aosp * commit '457bed2bc6561dd67429dde238453fee8602fa9b': fix [3123221] Video sticks playing back upside down following orientation switch
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r--services/surfaceflinger/LayerBuffer.cpp13
-rw-r--r--services/surfaceflinger/LayerBuffer.h3
2 files changed, 16 insertions, 0 deletions
diff --git a/services/surfaceflinger/LayerBuffer.cpp b/services/surfaceflinger/LayerBuffer.cpp
index c060895..b7f9481 100644
--- a/services/surfaceflinger/LayerBuffer.cpp
+++ b/services/surfaceflinger/LayerBuffer.cpp
@@ -132,6 +132,14 @@ void LayerBuffer::unlockPageFlip(const Transform& planeTransform,
LayerBase::unlockPageFlip(planeTransform, outDirtyRegion);
}
+void LayerBuffer::validateVisibility(const Transform& globalTransform)
+{
+ sp<Source> source(getSource());
+ if (source != 0)
+ source->onvalidateVisibility(globalTransform);
+ LayerBase::validateVisibility(globalTransform);
+}
+
void LayerBuffer::drawForSreenShot() const
{
const DisplayHardware& hw(graphicPlane(0).displayHardware());
@@ -641,6 +649,11 @@ void LayerBuffer::OverlaySource::onTransaction(uint32_t flags)
}
}
+void LayerBuffer::OverlaySource::onvalidateVisibility(const Transform&)
+{
+ mVisibilityChanged = true;
+}
+
void LayerBuffer::OverlaySource::onVisibilityResolved(
const Transform& planeTransform)
{
diff --git a/services/surfaceflinger/LayerBuffer.h b/services/surfaceflinger/LayerBuffer.h
index fece858..a89d8fe 100644
--- a/services/surfaceflinger/LayerBuffer.h
+++ b/services/surfaceflinger/LayerBuffer.h
@@ -44,6 +44,7 @@ class LayerBuffer : public LayerBaseClient
virtual void onDraw(const Region& clip) const;
virtual void onTransaction(uint32_t flags);
virtual void onVisibilityResolved(const Transform& planeTransform);
+ virtual void onvalidateVisibility(const Transform& globalTransform) { }
virtual void postBuffer(ssize_t offset);
virtual void unregisterBuffers();
virtual void destroy() { }
@@ -67,6 +68,7 @@ public:
virtual void drawForSreenShot() const;
virtual uint32_t doTransaction(uint32_t flags);
virtual void unlockPageFlip(const Transform& planeTransform, Region& outDirtyRegion);
+ virtual void validateVisibility(const Transform& globalTransform);
status_t registerBuffers(const ISurface::BufferHeap& buffers);
void postBuffer(ssize_t offset);
@@ -153,6 +155,7 @@ private:
virtual void onDraw(const Region& clip) const;
virtual void onTransaction(uint32_t flags);
virtual void onVisibilityResolved(const Transform& planeTransform);
+ virtual void onvalidateVisibility(const Transform& globalTransform);
virtual void destroy();
private: