changeset 93:eb3ef3b7e244

Fix: change to lazy intialization, to prevent Display creation too early.
author Frank Benoit <benoit@tionex.de>
date Wed, 09 Jul 2008 18:01:43 +0200
parents f05207c07a98
children dadb23ea55a6
files dwtx/jface/preference/PreferenceConverter.d
diffstat 1 files changed, 39 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/dwtx/jface/preference/PreferenceConverter.d	Mon Jul 07 15:54:03 2008 +0200
+++ b/dwtx/jface/preference/PreferenceConverter.d	Wed Jul 09 18:01:43 2008 +0200
@@ -74,30 +74,54 @@
     /**
      * The default-default value for <code>FontData[]</code> preferences.
      */
-    public static const FontData[] FONTDATA_ARRAY_DEFAULT_DEFAULT;
+    private static bool FONTDATA_ARRAY_DEFAULT_DEFAULT_initialized = false;
+    private static FontData[] FONTDATA_ARRAY_DEFAULT_DEFAULT_;
+    public static FontData[] FONTDATA_ARRAY_DEFAULT_DEFAULT(){
+        if( !FONTDATA_ARRAY_DEFAULT_DEFAULT_initialized ){
+            synchronized( PreferenceConverter.classinfo ){
+                if( !FONTDATA_ARRAY_DEFAULT_DEFAULT_initialized ){
+                    Display display = Display.getCurrent();
+                    if (display is null) {
+                        display = Display.getDefault ();
+                    }
+
+                    FONTDATA_ARRAY_DEFAULT_DEFAULT_ = display.getSystemFont().getFontData();
+                    FONTDATA_ARRAY_DEFAULT_DEFAULT_initialized = true;
+                }
+            }
+        }
+        return FONTDATA_ARRAY_DEFAULT_DEFAULT_;
+    }
 
     /**
      * The default-default value for <code>FontData</code> preferences.
      */
-    public static const FontData FONTDATA_DEFAULT_DEFAULT;
+    private static FontData FONTDATA_DEFAULT_DEFAULT_;
+    private static bool FONTDATA_DEFAULT_DEFAULT_initialized = false;
+    public static FontData FONTDATA_DEFAULT_DEFAULT(){
+        if( !FONTDATA_DEFAULT_DEFAULT_initialized ){
+            FONTDATA_ARRAY_DEFAULT_DEFAULT();
+            synchronized( PreferenceConverter.classinfo ){
+                if( !FONTDATA_DEFAULT_DEFAULT_initialized ){
+                    /**
+                    * The default-default value for <code>FontData</code> preferences.
+                    * This is left in for compatibility purposes. It is recommended that
+                    * FONTDATA_ARRAY_DEFAULT_DEFAULT is actually used.
+                    */
+
+                    FONTDATA_DEFAULT_DEFAULT_ = FONTDATA_ARRAY_DEFAULT_DEFAULT()[0];
+                    FONTDATA_DEFAULT_DEFAULT_initialized = true;
+                }
+            }
+        }
+        return FONTDATA_DEFAULT_DEFAULT_;
+    }
+
     static this() {
         POINT_DEFAULT_DEFAULT = new Point(0, 0);
         RECTANGLE_DEFAULT_DEFAULT = new Rectangle(0,
             0, 0, 0);
         COLOR_DEFAULT_DEFAULT = new RGB(0, 0, 0);
-        Display display = Display.getCurrent();
-        if (display is null) {
-            display = Display.getDefault ();
-        }
-
-        FONTDATA_ARRAY_DEFAULT_DEFAULT = display.getSystemFont().getFontData();
-        /**
-         * The default-default value for <code>FontData</code> preferences.
-         * This is left in for compatibility purposes. It is recommended that
-         * FONTDATA_ARRAY_DEFAULT_DEFAULT is actually used.
-         */
-
-        FONTDATA_DEFAULT_DEFAULT = FONTDATA_ARRAY_DEFAULT_DEFAULT[0];
     }
 
     /* (non-Javadoc)