--- old/src/share/bin/java.c 2014-06-17 18:13:52.000000000 +0400 +++ new/src/share/bin/java.c 2014-06-17 18:13:52.000000000 +0400 @@ -1816,17 +1816,43 @@ const char *jar_name = getenv(SPLASH_JAR_ENV_ENTRY); const char *file_name = getenv(SPLASH_FILE_ENV_ENTRY); int data_size; - void *image_data; - if (jar_name) { - image_data = JLI_JarUnpackFile(jar_name, file_name, &data_size); - if (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) { + + 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 { DoSplashInit(); - DoSplashLoadMemory(image_data, data_size); - JLI_MemFree(image_data); + 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 if (file_name) { - DoSplashInit(); - DoSplashLoadFile(file_name); } else { return; }