@@ -4462,6 +4462,15 @@ private long identity() {
44624462}
44634463
44644464private void init (Drawable drawable , GCData data , long hDC ) {
4465+ ImageHandle imageHandle = null ;
4466+ Image image = data .image ;
4467+ if (image != null ) {
4468+ imageHandle = image .getHandle (data .imageZoom , data .nativeZoom );
4469+ }
4470+ init (drawable , data , hDC , imageHandle );
4471+ }
4472+
4473+ private void init (Drawable drawable , GCData data , long hDC , ImageHandle imageHandle ) {
44654474 int foreground = data .foreground ;
44664475 if (foreground != -1 ) {
44674476 data .state &= ~(FOREGROUND | FOREGROUND_TEXT | PEN );
@@ -4485,8 +4494,8 @@ private void init(Drawable drawable, GCData data, long hDC) {
44854494 data .font = SWTFontProvider .getFont (device , OS .GetCurrentObject (hDC , OS .OBJ_FONT ), data .nativeZoom );
44864495 }
44874496 Image image = data .image ;
4488- if (image != null ) {
4489- data .hNullBitmap = OS .SelectObject (hDC , image . getHandle ( data . imageZoom , data . nativeZoom ) .getHandle ());
4497+ if (imageHandle != null ) {
4498+ data .hNullBitmap = OS .SelectObject (hDC , imageHandle .getHandle ());
44904499 image .memGC = this ;
44914500 }
44924501 int layout = data .layout ;
@@ -5935,12 +5944,12 @@ Point textExtentInPixels(String string, int flags) {
59355944 return new Point (rect .right , rect .bottom );
59365945}
59375946
5938- void refreshFor (Drawable drawable ) {
5947+ void refreshFor (Drawable drawable , ImageHandle imageHandle ) {
59395948 if (drawable == null ) SWT .error (SWT .ERROR_NULL_ARGUMENT );
59405949 destroy ();
59415950 GCData newData = new GCData ();
59425951 originalData .copyTo (newData );
5943- createGcHandle (drawable , newData );
5952+ createGcHandle (drawable , newData , imageHandle );
59445953}
59455954
59465955/**
@@ -6059,10 +6068,10 @@ private void removePreviousOperationIfSupercededBy(Operation operation) {
60596068 }
60606069}
60616070
6062- private void createGcHandle (Drawable drawable , GCData newData ) {
6063- long newHandle = drawable .internal_new_GC (newData );
6064- if (newHandle == 0 ) SWT .error (SWT .ERROR_NO_HANDLES );
6065- init (drawable , newData , newHandle );
6071+ private void createGcHandle (Drawable drawable , GCData newData , ImageHandle imageHandle ) {
6072+ long gcHandle = drawable .internal_new_GC (newData );
6073+ if (gcHandle == 0 ) SWT .error (SWT .ERROR_NO_HANDLES );
6074+ init (drawable , newData , gcHandle , imageHandle );
60666075 for (Operation operation : operations ) {
60676076 operation .apply ();
60686077 }
0 commit comments