diff options
author | Nikita Nemkin | 2019-03-28 16:34:15 +0000 |
---|---|---|
committer | Lars Vogel | 2019-04-15 09:35:57 +0000 |
commit | 44ae0603eb815357cbc63a475955dc0268f4623d (patch) | |
tree | cd27f8fbc6f18b9b6381749acf2ed4dccf61245c | |
parent | d9768fbd136dc5773bddc1fdd707d09933dec747 (diff) | |
download | eclipse.platform.swt-44ae0603eb815357cbc63a475955dc0268f4623d.tar.gz eclipse.platform.swt-44ae0603eb815357cbc63a475955dc0268f4623d.tar.xz eclipse.platform.swt-44ae0603eb815357cbc63a475955dc0268f4623d.zip |
Bug 546420 - [Win32] Don't guard against GDI+ loading failure
GDI+ presence is guaranteed on WinXP and later.
Change-Id: Iee3c46ce8a2ac61170a51b06d7986340051ca1c8
Signed-off-by: Nikita Nemkin <nikita@nemkin.ru>
3 files changed, 19 insertions, 33 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java index aa27ead398..f4d6cdf57f 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java @@ -189,32 +189,24 @@ protected void checkDevice () { void checkGDIP() { if (gdipToken != null) return; - int oldErrorMode = OS.SetErrorMode (OS.SEM_FAILCRITICALERRORS); - try { - long /*int*/ [] token = new long /*int*/ [1]; - GdiplusStartupInput input = new GdiplusStartupInput (); - input.GdiplusVersion = 1; - if (Gdip.GdiplusStartup (token, input, 0) == 0) { - gdipToken = token; - if (loadedFonts != null) { - fontCollection = Gdip.PrivateFontCollection_new(); - if (fontCollection == 0) SWT.error(SWT.ERROR_NO_HANDLES); - for (int i = 0; i < loadedFonts.length; i++) { - String path = loadedFonts[i]; - if (path == null) break; - int length = path.length(); - char [] buffer = new char [length + 1]; - path.getChars(0, length, buffer, 0); - Gdip.PrivateFontCollection_AddFontFile(fontCollection, buffer); - } - loadedFonts = null; - } + long /*int*/ [] token = new long /*int*/ [1]; + GdiplusStartupInput input = new GdiplusStartupInput (); + input.GdiplusVersion = 1; + if (Gdip.GdiplusStartup (token, input, 0) != 0) SWT.error (SWT.ERROR_NO_HANDLES); + gdipToken = token; + if (loadedFonts != null) { + fontCollection = Gdip.PrivateFontCollection_new(); + if (fontCollection == 0) SWT.error(SWT.ERROR_NO_HANDLES); + for (int i = 0; i < loadedFonts.length; i++) { + String path = loadedFonts[i]; + if (path == null) break; + int length = path.length(); + char [] buffer = new char [length + 1]; + path.getChars(0, length, buffer, 0); + Gdip.PrivateFontCollection_AddFontFile(fontCollection, buffer); } - } catch (Throwable t) { - SWT.error (SWT.ERROR_NO_GRAPHICS_LIBRARY, t, " [GDI+ is required]"); //$NON-NLS-1$ - } finally { - OS.SetErrorMode (oldErrorMode); - } + loadedFonts = null; + } } /** diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java index 9671da2438..44350b9454 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java @@ -4003,9 +4003,7 @@ public void setAdvanced(boolean advanced) { if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED); if (advanced && data.gdipGraphics != 0) return; if (advanced) { - try { - initGdip(); - } catch (SWTException e) {} + initGdip(); } else { disposeGdip(); data.alpha = 0xFF; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java index 86c7ce5ce4..f4bac26440 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java @@ -807,12 +807,8 @@ boolean refreshImageForZoom () { } void initNative(String filename) { + device.checkGDIP(); boolean gdip = true; - try { - device.checkGDIP(); - } catch (SWTException e) { - gdip = false; - } /* * Bug in GDI+. For some reason, Bitmap.LockBits() segment faults * when loading GIF files in 64-bit Windows. The fix is to not use |