src/share/bin/java.c
Print this page
*** 1814,1834 ****
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;
if (jar_name) {
! image_data = JLI_JarUnpackFile(jar_name, file_name, &data_size);
if (image_data) {
DoSplashInit();
DoSplashLoadMemory(image_data, data_size);
JLI_MemFree(image_data);
}
! } else if (file_name) {
DoSplashInit();
DoSplashLoadFile(file_name);
} else {
return;
}
DoSplashSetFileJarName(file_name, jar_name);
--- 1814,1860 ----
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 = 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();
+ 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);