src/share/bin/java.c

Print this page

        

@@ -1814,21 +1814,47 @@
 ShowSplashScreen()
 {
     const char *jar_name = getenv(SPLASH_JAR_ENV_ENTRY);
     const char *file_name = getenv(SPLASH_FILE_ENV_ENTRY);
     int data_size;
-    void *image_data;
+    void *image_data = NULL;
+    float scale_factor = 1;
+    char *scaled_splash_name = NULL;
+    
+    if (file_name) {
+        scaled_splash_name = DoSplashGetScaledImageName(
+                           jar_name, file_name, &scale_factor);
     if (jar_name) {
-        image_data = JLI_JarUnpackFile(jar_name, file_name, &data_size);
+            
+            if (scaled_splash_name) {
+                image_data = JLI_JarUnpackFile(
+                            jar_name, scaled_splash_name, &data_size);
+            }
+            
+            if (!image_data) {
+                scale_factor = 1;
+                image_data = JLI_JarUnpackFile(
+                            jar_name, file_name, &data_size);
+            }
         if (image_data) {
             DoSplashInit();
+                DoSplashSetScaleFactor(scale_factor);
             DoSplashLoadMemory(image_data, data_size);
             JLI_MemFree(image_data);
         }
-    } else if (file_name) {
+        } else {
         DoSplashInit();
+            if(scaled_splash_name){
+                DoSplashSetScaleFactor(scale_factor);
+                DoSplashLoadFile(scaled_splash_name);
+            } else {
         DoSplashLoadFile(file_name);
+            }
+        }
+        if(scaled_splash_name){
+            JLI_MemFree(scaled_splash_name);
+        }
     } else {
         return;
     }
     DoSplashSetFileJarName(file_name, jar_name);