Loading libs/hwui/Android.bp +6 −3 Original line number Diff line number Diff line Loading @@ -171,7 +171,6 @@ cc_library_headers { cc_defaults { name: "android_graphics_apex", host_supported: true, cflags: [ "-Wno-unused-parameter", "-Wno-non-virtual-dtor", Loading Loading @@ -231,7 +230,6 @@ cc_library_headers { cc_defaults { name: "android_graphics_jni", host_supported: true, cflags: [ "-Wno-unused-parameter", "-Wno-non-virtual-dtor", Loading Loading @@ -537,7 +535,11 @@ cc_defaults { cc_test { name: "hwui_unit_tests", defaults: ["hwui_test_defaults"], defaults: [ "hwui_test_defaults", "android_graphics_apex", "android_graphics_jni", ], static_libs: [ "libgmock", Loading @@ -549,6 +551,7 @@ cc_test { srcs: [ "tests/unit/main.cpp", "tests/unit/ABitmapTests.cpp", "tests/unit/CacheManagerTests.cpp", "tests/unit/CanvasContextTests.cpp", "tests/unit/CommonPoolTests.cpp", Loading libs/hwui/apex/android_bitmap.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -163,10 +163,9 @@ jobject ABitmapConfig_getConfigFromFormat(JNIEnv* env, AndroidBitmapFormat forma void ABitmap_notifyPixelsChanged(ABitmap* bitmapHandle) { Bitmap* bitmap = TypeCast::toBitmap(bitmapHandle); if (bitmap->isImmutable()) { ALOGE("Attempting to modify an immutable Bitmap!"); if (!bitmap->isImmutable()) { bitmap->notifyPixelsChanged(); } return bitmap->notifyPixelsChanged(); } namespace { Loading libs/hwui/tests/unit/ABitmapTests.cpp 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <gtest/gtest.h> #include "android/graphics/bitmap.h" #include "apex/TypeCast.h" #include "hwui/Bitmap.h" #include "tests/common/TestUtils.h" using namespace android; using namespace android::uirenderer; TEST(ABitmap, notifyPixelsChanged) { // generate a bitmap and its public API handle sk_sp<Bitmap> bitmap(TestUtils::createBitmap(1, 1)); ABitmap* abmp = android::TypeCast::toABitmap(bitmap.get()); // verify that notification changes the genID uint32_t genID = bitmap->getGenerationID(); ABitmap_notifyPixelsChanged(abmp); ASSERT_TRUE(bitmap->getGenerationID() != genID); // mark the bitmap as immutable ASSERT_FALSE(bitmap->isImmutable()); bitmap->setImmutable(); ASSERT_TRUE(bitmap->isImmutable()); // attempt to notify that the pixels have changed genID = bitmap->getGenerationID(); ABitmap_notifyPixelsChanged(abmp); ASSERT_TRUE(bitmap->getGenerationID() == genID); } Loading
libs/hwui/Android.bp +6 −3 Original line number Diff line number Diff line Loading @@ -171,7 +171,6 @@ cc_library_headers { cc_defaults { name: "android_graphics_apex", host_supported: true, cflags: [ "-Wno-unused-parameter", "-Wno-non-virtual-dtor", Loading Loading @@ -231,7 +230,6 @@ cc_library_headers { cc_defaults { name: "android_graphics_jni", host_supported: true, cflags: [ "-Wno-unused-parameter", "-Wno-non-virtual-dtor", Loading Loading @@ -537,7 +535,11 @@ cc_defaults { cc_test { name: "hwui_unit_tests", defaults: ["hwui_test_defaults"], defaults: [ "hwui_test_defaults", "android_graphics_apex", "android_graphics_jni", ], static_libs: [ "libgmock", Loading @@ -549,6 +551,7 @@ cc_test { srcs: [ "tests/unit/main.cpp", "tests/unit/ABitmapTests.cpp", "tests/unit/CacheManagerTests.cpp", "tests/unit/CanvasContextTests.cpp", "tests/unit/CommonPoolTests.cpp", Loading
libs/hwui/apex/android_bitmap.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -163,10 +163,9 @@ jobject ABitmapConfig_getConfigFromFormat(JNIEnv* env, AndroidBitmapFormat forma void ABitmap_notifyPixelsChanged(ABitmap* bitmapHandle) { Bitmap* bitmap = TypeCast::toBitmap(bitmapHandle); if (bitmap->isImmutable()) { ALOGE("Attempting to modify an immutable Bitmap!"); if (!bitmap->isImmutable()) { bitmap->notifyPixelsChanged(); } return bitmap->notifyPixelsChanged(); } namespace { Loading
libs/hwui/tests/unit/ABitmapTests.cpp 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <gtest/gtest.h> #include "android/graphics/bitmap.h" #include "apex/TypeCast.h" #include "hwui/Bitmap.h" #include "tests/common/TestUtils.h" using namespace android; using namespace android::uirenderer; TEST(ABitmap, notifyPixelsChanged) { // generate a bitmap and its public API handle sk_sp<Bitmap> bitmap(TestUtils::createBitmap(1, 1)); ABitmap* abmp = android::TypeCast::toABitmap(bitmap.get()); // verify that notification changes the genID uint32_t genID = bitmap->getGenerationID(); ABitmap_notifyPixelsChanged(abmp); ASSERT_TRUE(bitmap->getGenerationID() != genID); // mark the bitmap as immutable ASSERT_FALSE(bitmap->isImmutable()); bitmap->setImmutable(); ASSERT_TRUE(bitmap->isImmutable()); // attempt to notify that the pixels have changed genID = bitmap->getGenerationID(); ABitmap_notifyPixelsChanged(abmp); ASSERT_TRUE(bitmap->getGenerationID() == genID); }