Loading core/java/android/view/SurfaceView.java +0 −9 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ public class SurfaceView extends View { int mHeight = -1; int mFormat = -1; final Rect mSurfaceFrame = new Rect(); Rect mTmpDirty; int mLastSurfaceWidth = -1, mLastSurfaceHeight = -1; boolean mUpdateWindowNeeded; boolean mReportDrawNeeded; Loading Loading @@ -795,14 +794,6 @@ public class SurfaceView extends View { Canvas c = null; if (!mDrawingStopped && mWindow != null) { if (dirty == null) { if (mTmpDirty == null) { mTmpDirty = new Rect(); } mTmpDirty.set(mSurfaceFrame); dirty = mTmpDirty; } try { c = mSurface.lockCanvas(dirty); } catch (Exception e) { Loading core/jni/android_view_Surface.cpp +15 −33 Original line number Diff line number Diff line Loading @@ -208,25 +208,19 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje return NULL; } // get dirty region Region dirtyRegion; Rect dirtyRect; Rect* dirtyRectPtr = NULL; if (dirtyRectObj) { Rect dirty; dirty.left = env->GetIntField(dirtyRectObj, gRectClassInfo.left); dirty.top = env->GetIntField(dirtyRectObj, gRectClassInfo.top); dirty.right = env->GetIntField(dirtyRectObj, gRectClassInfo.right); dirty.bottom = env->GetIntField(dirtyRectObj, gRectClassInfo.bottom); if (!dirty.isEmpty()) { dirtyRegion.set(dirty); } } else { dirtyRegion.set(Rect(0x3FFF, 0x3FFF)); dirtyRect.left = env->GetIntField(dirtyRectObj, gRectClassInfo.left); dirtyRect.top = env->GetIntField(dirtyRectObj, gRectClassInfo.top); dirtyRect.right = env->GetIntField(dirtyRectObj, gRectClassInfo.right); dirtyRect.bottom = env->GetIntField(dirtyRectObj, gRectClassInfo.bottom); dirtyRectPtr = &dirtyRect; } ANativeWindow_Buffer outBuffer; Rect dirtyBounds(dirtyRegion.getBounds()); status_t err = surface->lock(&outBuffer, &dirtyBounds); dirtyRegion.set(dirtyBounds); status_t err = surface->lock(&outBuffer, dirtyRectPtr); if (err < 0) { const char* const exception = (err == NO_MEMORY) ? OutOfResourcesException : Loading Loading @@ -255,27 +249,15 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvasObj, nativeCanvas); SkRegion clipReg; if (dirtyRegion.isRect()) { // very common case const Rect b(dirtyRegion.getBounds()); clipReg.setRect(b.left, b.top, b.right, b.bottom); } else { size_t count; Rect const* r = dirtyRegion.getArray(&count); while (count) { clipReg.op(r->left, r->top, r->right, r->bottom, SkRegion::kUnion_Op); r++, count--; } if (dirtyRectPtr) { nativeCanvas->clipRect( SkRect::Make(reinterpret_cast<const SkIRect&>(dirtyRect)) ); } nativeCanvas->clipRegion(clipReg); if (dirtyRectObj) { const Rect& bounds(dirtyRegion.getBounds()); env->SetIntField(dirtyRectObj, gRectClassInfo.left, bounds.left); env->SetIntField(dirtyRectObj, gRectClassInfo.top, bounds.top); env->SetIntField(dirtyRectObj, gRectClassInfo.right, bounds.right); env->SetIntField(dirtyRectObj, gRectClassInfo.bottom, bounds.bottom); env->SetIntField(dirtyRectObj, gRectClassInfo.left, dirtyRect.left); env->SetIntField(dirtyRectObj, gRectClassInfo.top, dirtyRect.top); env->SetIntField(dirtyRectObj, gRectClassInfo.right, dirtyRect.right); env->SetIntField(dirtyRectObj, gRectClassInfo.bottom, dirtyRect.bottom); } return canvasObj; Loading Loading
core/java/android/view/SurfaceView.java +0 −9 Original line number Diff line number Diff line Loading @@ -160,7 +160,6 @@ public class SurfaceView extends View { int mHeight = -1; int mFormat = -1; final Rect mSurfaceFrame = new Rect(); Rect mTmpDirty; int mLastSurfaceWidth = -1, mLastSurfaceHeight = -1; boolean mUpdateWindowNeeded; boolean mReportDrawNeeded; Loading Loading @@ -795,14 +794,6 @@ public class SurfaceView extends View { Canvas c = null; if (!mDrawingStopped && mWindow != null) { if (dirty == null) { if (mTmpDirty == null) { mTmpDirty = new Rect(); } mTmpDirty.set(mSurfaceFrame); dirty = mTmpDirty; } try { c = mSurface.lockCanvas(dirty); } catch (Exception e) { Loading
core/jni/android_view_Surface.cpp +15 −33 Original line number Diff line number Diff line Loading @@ -208,25 +208,19 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje return NULL; } // get dirty region Region dirtyRegion; Rect dirtyRect; Rect* dirtyRectPtr = NULL; if (dirtyRectObj) { Rect dirty; dirty.left = env->GetIntField(dirtyRectObj, gRectClassInfo.left); dirty.top = env->GetIntField(dirtyRectObj, gRectClassInfo.top); dirty.right = env->GetIntField(dirtyRectObj, gRectClassInfo.right); dirty.bottom = env->GetIntField(dirtyRectObj, gRectClassInfo.bottom); if (!dirty.isEmpty()) { dirtyRegion.set(dirty); } } else { dirtyRegion.set(Rect(0x3FFF, 0x3FFF)); dirtyRect.left = env->GetIntField(dirtyRectObj, gRectClassInfo.left); dirtyRect.top = env->GetIntField(dirtyRectObj, gRectClassInfo.top); dirtyRect.right = env->GetIntField(dirtyRectObj, gRectClassInfo.right); dirtyRect.bottom = env->GetIntField(dirtyRectObj, gRectClassInfo.bottom); dirtyRectPtr = &dirtyRect; } ANativeWindow_Buffer outBuffer; Rect dirtyBounds(dirtyRegion.getBounds()); status_t err = surface->lock(&outBuffer, &dirtyBounds); dirtyRegion.set(dirtyBounds); status_t err = surface->lock(&outBuffer, dirtyRectPtr); if (err < 0) { const char* const exception = (err == NO_MEMORY) ? OutOfResourcesException : Loading Loading @@ -255,27 +249,15 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvasObj, nativeCanvas); SkRegion clipReg; if (dirtyRegion.isRect()) { // very common case const Rect b(dirtyRegion.getBounds()); clipReg.setRect(b.left, b.top, b.right, b.bottom); } else { size_t count; Rect const* r = dirtyRegion.getArray(&count); while (count) { clipReg.op(r->left, r->top, r->right, r->bottom, SkRegion::kUnion_Op); r++, count--; } if (dirtyRectPtr) { nativeCanvas->clipRect( SkRect::Make(reinterpret_cast<const SkIRect&>(dirtyRect)) ); } nativeCanvas->clipRegion(clipReg); if (dirtyRectObj) { const Rect& bounds(dirtyRegion.getBounds()); env->SetIntField(dirtyRectObj, gRectClassInfo.left, bounds.left); env->SetIntField(dirtyRectObj, gRectClassInfo.top, bounds.top); env->SetIntField(dirtyRectObj, gRectClassInfo.right, bounds.right); env->SetIntField(dirtyRectObj, gRectClassInfo.bottom, bounds.bottom); env->SetIntField(dirtyRectObj, gRectClassInfo.left, dirtyRect.left); env->SetIntField(dirtyRectObj, gRectClassInfo.top, dirtyRect.top); env->SetIntField(dirtyRectObj, gRectClassInfo.right, dirtyRect.right); env->SetIntField(dirtyRectObj, gRectClassInfo.bottom, dirtyRect.bottom); } return canvasObj; Loading