summaryrefslogtreecommitdiffstats
path: root/core/jni/android_view_Surface.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-02-19 10:57:31 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-02-19 10:57:31 -0800
commit3001a035439d8134a7d70d796376d1dfbff3cdcd (patch)
tree343ccdba15a594ff6e50c874a145232753315a30 /core/jni/android_view_Surface.cpp
parentda996f390e17e16f2dfa60e972e7ebc4f868f37e (diff)
downloadframeworks_base-3001a035439d8134a7d70d796376d1dfbff3cdcd.zip
frameworks_base-3001a035439d8134a7d70d796376d1dfbff3cdcd.tar.gz
frameworks_base-3001a035439d8134a7d70d796376d1dfbff3cdcd.tar.bz2
auto import from //branches/cupcake/...@132276
Diffstat (limited to 'core/jni/android_view_Surface.cpp')
-rw-r--r--core/jni/android_view_Surface.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index f09bd4c..8baaa84 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -212,7 +212,9 @@ static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect)
dirty.top = env->GetIntField(dirtyRect, ro.t);
dirty.right = env->GetIntField(dirtyRect, ro.r);
dirty.bottom= env->GetIntField(dirtyRect, ro.b);
- dirtyRegion.set(dirty);
+ if (dirty.left < dirty.right && dirty.top < dirty.bottom) {
+ dirtyRegion.set(dirty);
+ }
} else {
dirtyRegion.set(Rect(0x3FFF,0x3FFF));
}
@@ -246,6 +248,14 @@ static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect)
int saveCount = nativeCanvas->save();
env->SetIntField(clazz, so.saveCount, saveCount);
+ if (dirtyRect) {
+ Rect bounds(dirtyRegion.bounds());
+ env->SetIntField(dirtyRect, ro.l, bounds.left);
+ env->SetIntField(dirtyRect, ro.t, bounds.top);
+ env->SetIntField(dirtyRect, ro.r, bounds.right);
+ env->SetIntField(dirtyRect, ro.b, bounds.bottom);
+ }
+
return canvas;
}