Bitmap: regenerate GdkTexture when Canvas was used on the Bitmap

This commit is contained in:
Julian Winkler
2024-06-15 00:04:23 +02:00
parent 2a10196bc5
commit b81f53e4b2
4 changed files with 27 additions and 1 deletions

View File

@@ -1607,13 +1607,24 @@ public final class Bitmap {
return texture;
}
/**
* internal ATL method to destroy the cached GdkTexture when the Bitmap was touched
*/
public void destroyTexture() {
if (texture != 0) {
native_unref_texture(texture);
texture = 0;
}
}
//////////// native methods
private native long native_bitmap_from_path(CharSequence path);
static native long native_copy(long src);
static native long native_subpixbuf(long src, int x, int y, int width, int height);
private static native long native_create(int width, int height);
public static native long native_paintable_from_pixbuf(long pixbuf);
private static native long native_paintable_from_pixbuf(long pixbuf);
private static native void native_unref_texture(long texture);
private static native Bitmap nativeCopy(int srcBitmap, int nativeConfig,
boolean isMutable);

View File

@@ -9,6 +9,7 @@ public class Canvas {
public Canvas() {}
public Canvas(Bitmap bmp) {
bmp.destroyTexture(); // invalidate cached texture
this.skia_canvas = native_canvas_from_bitmap(bmp.pixbuf);
this.widget = 0;
}