src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 55708 2b0acaf92ecc
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     1
/*
55708
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
     2
 * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     4
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    10
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    15
 * accompanied this code).
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    16
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    20
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    23
 * questions.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    24
 */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    25
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    26
#include "splashscreen_impl.h"
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    27
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    28
#import <Cocoa/Cocoa.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    29
#import <objc/objc-auto.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    30
55189
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
    31
#include <Security/AuthSession.h>
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    32
#import <JavaNativeFoundation/JavaNativeFoundation.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    33
#import "NSApplicationAWT.h"
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    34
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    35
#include <sys/time.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    36
#include <pthread.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    37
#include <iconv.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    38
#include <langinfo.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    39
#include <locale.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    40
#include <fcntl.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    41
#include <poll.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    42
#include <errno.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    43
#include <sys/types.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    44
#include <signal.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    45
#include <unistd.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    46
#include <dlfcn.h>
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    47
18232
b538b71fb429 8009071: Improve shape handling
anthony
parents: 12047
diff changeset
    48
#include <sizecalc.h>
25769
f18107faec8f 8049198: [macosx] Incorrect thread access when showing splash screen
alexsch
parents: 25552
diff changeset
    49
#import "ThreadUtilities.h"
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    50
41776
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
    51
NSString* findScaledImageName(NSString *fileName,
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
    52
                              NSUInteger dotIndex,
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
    53
                              NSString *strToAppend);
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
    54
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    55
static NSScreen* SplashNSScreen()
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    56
{
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    57
    return [[NSScreen screens] objectAtIndex: 0];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    58
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    59
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    60
static void SplashCenter(Splash * splash)
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    61
{
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    62
    NSRect screenFrame = [SplashNSScreen() frame];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    63
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    64
    splash->x = (screenFrame.size.width - splash->width) / 2;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    65
    splash->y = (screenFrame.size.height - splash->height) / 2 + screenFrame.origin.y;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    66
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    67
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    68
unsigned
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    69
SplashTime(void) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    70
    struct timeval tv;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    71
    struct timezone tz;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    72
    unsigned long long msec;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    73
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    74
    gettimeofday(&tv, &tz);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    75
    msec = (unsigned long long) tv.tv_sec * 1000 +
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    76
        (unsigned long long) tv.tv_usec / 1000;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    77
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    78
    return (unsigned) msec;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    79
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    80
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    81
/* Could use npt but decided to cut down on linked code size */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    82
char* SplashConvertStringAlloc(const char* in, int* size) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    83
    const char     *codeset;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    84
    const char     *codeset_out;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    85
    iconv_t         cd;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    86
    size_t          rc;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    87
    char           *buf = NULL, *out;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    88
    size_t          bufSize, inSize, outSize;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    89
    const char* old_locale;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    90
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    91
    if (!in) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    92
        return NULL;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    93
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    94
    old_locale = setlocale(LC_ALL, "");
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    95
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    96
    codeset = nl_langinfo(CODESET);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    97
    if ( codeset == NULL || codeset[0] == 0 ) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    98
        goto done;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    99
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   100
    /* we don't need BOM in output so we choose native BE or LE encoding here */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   101
    codeset_out = (platformByteOrder()==BYTE_ORDER_MSBFIRST) ?
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   102
        "UCS-2BE" : "UCS-2LE";
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   103
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   104
    cd = iconv_open(codeset_out, codeset);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   105
    if (cd == (iconv_t)-1 ) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   106
        goto done;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   107
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   108
    inSize = strlen(in);
18232
b538b71fb429 8009071: Improve shape handling
anthony
parents: 12047
diff changeset
   109
    buf = SAFE_SIZE_ARRAY_ALLOC(malloc, inSize, 2);
b538b71fb429 8009071: Improve shape handling
anthony
parents: 12047
diff changeset
   110
    if (!buf) {
b538b71fb429 8009071: Improve shape handling
anthony
parents: 12047
diff changeset
   111
        return NULL;
b538b71fb429 8009071: Improve shape handling
anthony
parents: 12047
diff changeset
   112
    }
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   113
    bufSize = inSize*2; // need 2 bytes per char for UCS-2, this is
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   114
                        // 2 bytes per source byte max
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   115
    out = buf; outSize = bufSize;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   116
    /* linux iconv wants char** source and solaris wants const char**...
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   117
       cast to void* */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   118
    rc = iconv(cd, (void*)&in, &inSize, &out, &outSize);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   119
    iconv_close(cd);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   120
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   121
    if (rc == (size_t)-1) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   122
        free(buf);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   123
        buf = NULL;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   124
    } else {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   125
        if (size) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   126
            *size = (bufSize-outSize)/2; /* bytes to wchars */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   127
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   128
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   129
done:
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   130
    setlocale(LC_ALL, old_locale);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   131
    return buf;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   132
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   133
29736
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   134
BOOL isSWTRunning() {
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   135
    char envVar[80];
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   136
    // If this property is present we are running SWT
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   137
    snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid());
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   138
    return getenv(envVar) != NULL;
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   139
}
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   140
36907
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   141
jboolean SplashGetScaledImageName(const char* jar, const char* file,
41776
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   142
                                  float *scaleFactor, char *scaledFile,
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   143
                                  const size_t scaledImageLength) {
29736
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   144
    *scaleFactor = 1;
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   145
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   146
    if(isSWTRunning()){
36907
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   147
        return JNI_FALSE;
29736
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   148
    }
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   149
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   150
    NSAutoreleasePool *pool = [NSAutoreleasePool new];
29736
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   151
    __block float screenScaleFactor = 1;
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   152
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   153
    [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   154
        // initialize NSApplication and AWT stuff
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   155
        [NSApplicationAWT sharedApplication];
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   156
        screenScaleFactor = [SplashNSScreen() backingScaleFactor];
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   157
    }];
25769
f18107faec8f 8049198: [macosx] Incorrect thread access when showing splash screen
alexsch
parents: 25552
diff changeset
   158
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   159
    if (screenScaleFactor > 1) {
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   160
        NSString *fileName = [NSString stringWithUTF8String: file];
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   161
        NSUInteger length = [fileName length];
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   162
        NSRange range = [fileName rangeOfString: @"."
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   163
                                        options:NSBackwardsSearch];
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   164
        NSUInteger dotIndex = range.location;
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   165
        NSString *fileName2x = nil;
41776
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   166
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   167
        fileName2x = findScaledImageName(fileName, dotIndex, @"@2x");
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   168
        if(![[NSFileManager defaultManager]
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   169
                fileExistsAtPath: fileName2x]) {
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   170
            fileName2x = findScaledImageName(fileName, dotIndex, @"@200pct");
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   171
        }
41776
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   172
        if (jar || [[NSFileManager defaultManager]
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   173
                fileExistsAtPath: fileName2x]){
36907
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   174
            if (strlen([fileName2x UTF8String]) > scaledImageLength) {
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   175
                [pool drain];
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   176
                return JNI_FALSE;
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   177
            }
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   178
            *scaleFactor = 2;
36907
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   179
            strcpy(scaledFile, [fileName2x UTF8String]);
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   180
            [pool drain];
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   181
            return JNI_TRUE;
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   182
        }
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   183
    }
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   184
    [pool drain];
36907
c3d8383e3efb 8145173: HiDPI splash screen support on Windows
rchamyal
parents: 31651
diff changeset
   185
    return JNI_FALSE;
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   186
}
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   187
55189
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   188
static int isInAquaSession() {
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   189
    // environment variable to bypass the aqua session check
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   190
    char *ev = getenv("AWT_FORCE_HEADFUL");
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   191
    if (ev && (strncasecmp(ev, "true", 4) == 0)) {
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   192
        // if "true" then tell the caller we're in
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   193
        // an Aqua session without actually checking
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   194
        return 1;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   195
    }
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   196
    // Is the WindowServer available?
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   197
    SecuritySessionId session_id;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   198
    SessionAttributeBits session_info;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   199
    OSStatus status = SessionGetInfo(callerSecuritySession, &session_id, &session_info);
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   200
    if (status == noErr) {
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   201
        if (session_info & sessionHasGraphicAccess) {
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   202
            return 1;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   203
        }
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   204
    }
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   205
    return 0;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   206
}
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   207
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   208
int
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   209
SplashInitPlatform(Splash * splash) {
55189
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   210
    if (!isInAquaSession()) {
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   211
        return 0;
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   212
    }
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   213
    pthread_mutex_init(&splash->lock, NULL);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   214
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   215
    splash->maskRequired = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   216
55708
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   217
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   218
    //TODO: the following is too much of a hack but should work in 90% cases.
47020
2c55106dc37b 8186851: fix misspellings of "dependent" and "independent" in the JDK repo
smarks
parents: 46874
diff changeset
   219
    //      besides we don't use device-dependent drawing, so probably
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   220
    //      that's very fine indeed
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   221
    splash->byteAlignment = 1;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   222
    initFormat(&splash->screenFormat, 0xff << 8,
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   223
            0xff << 16, 0xff << 24, 0xff << 0);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   224
    splash->screenFormat.byteOrder = 1 ?  BYTE_ORDER_LSBFIRST : BYTE_ORDER_MSBFIRST;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   225
    splash->screenFormat.depthBytes = 4;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   226
29736
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   227
    // If we are running SWT we should not start a runLoop
83a76fe84763 8075244: [macosx] The fix for JDK-8043869 should be reworked
alexsch
parents: 29726
diff changeset
   228
    if (!isSWTRunning()) {
24190
bbd2288a8a29 8039926: -spash:<image> can't be combined with -xStartOnFirstThread since JDK 7
pchelko
parents: 23328
diff changeset
   229
        [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
bbd2288a8a29 8039926: -spash:<image> can't be combined with -xStartOnFirstThread since JDK 7
pchelko
parents: 23328
diff changeset
   230
            [NSApplicationAWT runAWTLoopWithApp:[NSApplicationAWT sharedApplication]];
bbd2288a8a29 8039926: -spash:<image> can't be combined with -xStartOnFirstThread since JDK 7
pchelko
parents: 23328
diff changeset
   231
        }];
bbd2288a8a29 8039926: -spash:<image> can't be combined with -xStartOnFirstThread since JDK 7
pchelko
parents: 23328
diff changeset
   232
    }
55189
fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS
prr
parents: 47216
diff changeset
   233
    return 1;
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   234
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   235
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   236
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   237
SplashCleanupPlatform(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   238
    splash->maskRequired = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   239
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   240
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   241
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   242
SplashDonePlatform(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   243
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   244
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   245
    pthread_mutex_destroy(&splash->lock);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   246
    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   247
        if (splash->window) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   248
            [splash->window orderOut:nil];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   249
            [splash->window release];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   250
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   251
    }];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   252
    [pool drain];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   253
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   254
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   255
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   256
SplashLock(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   257
    pthread_mutex_lock(&splash->lock);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   258
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   259
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   260
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   261
SplashUnlock(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   262
    pthread_mutex_unlock(&splash->lock);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   263
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   264
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   265
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   266
SplashInitFrameShape(Splash * splash, int imageIndex) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   267
    // No shapes, we rely on alpha compositing
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   268
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   269
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   270
void * SplashScreenThread(void *param);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   271
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   272
SplashCreateThread(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   273
    pthread_t thr;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   274
    pthread_attr_t attr;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   275
    int rc;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   276
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   277
    pthread_attr_init(&attr);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   278
    rc = pthread_create(&thr, &attr, SplashScreenThread, (void *) splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   279
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   280
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   281
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   282
SplashRedrawWindow(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   283
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   284
55708
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   285
    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   286
        // drop the reference to the old view and image
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   287
        [splash->window setContentView: nil];
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   288
        SplashUpdateScreenData(splash);
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   289
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   290
        // NSDeviceRGBColorSpace vs. NSCalibratedRGBColorSpace ?
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   291
        NSBitmapImageRep * rep = [[NSBitmapImageRep alloc]
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   292
            initWithBitmapDataPlanes: (unsigned char**)&splash->screenData
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   293
                          pixelsWide: splash->width
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   294
                          pixelsHigh: splash->height
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   295
                       bitsPerSample: 8
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   296
                     samplesPerPixel: 4
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   297
                            hasAlpha: YES
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   298
                            isPlanar: NO
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   299
                      colorSpaceName: NSDeviceRGBColorSpace
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   300
                        bitmapFormat: NSAlphaFirstBitmapFormat | NSAlphaNonpremultipliedBitmapFormat
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   301
                         bytesPerRow: splash->width * 4
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   302
                        bitsPerPixel: 32];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   303
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   304
        NSImage * image = [[NSImage alloc]
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   305
            initWithSize: NSMakeSize(splash->width, splash->height)];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   306
        [image setBackgroundColor: [NSColor clearColor]];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   307
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   308
        [image addRepresentation: rep];
25552
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   309
        float scaleFactor = splash->scaleFactor;
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   310
        if (scaleFactor > 0 && scaleFactor != 1) {
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   311
            NSSize size = [image size];
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   312
            size.width /= scaleFactor;
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   313
            size.height /= scaleFactor;
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   314
            [image setSize: size];
96abb01815f6 8043869: [macosx] java -splash does not honor @2x hi dpi notation for retina support
alexsch
parents: 24190
diff changeset
   315
        }
55708
2b0acaf92ecc 8220517: Enhanced GIF support
serb
parents: 55189
diff changeset
   316
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   317
        NSImageView * view = [[NSImageView alloc] init];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   318
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   319
        [view setImage: image];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   320
        [view setEditable: NO];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   321
        //NOTE: we don't set a 'wait cursor' for the view because:
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   322
        //      1. The Cocoa GUI guidelines suggest to avoid it, and use a progress
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   323
        //         bar instead.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   324
        //      2. There simply isn't an instance of NSCursor that represent
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   325
        //         the 'wait cursor'. So that is undoable.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   326
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   327
        //TODO: only the first image in an animated gif preserves transparency.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   328
        //      Loos like the splash->screenData contains inappropriate data
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   329
        //      for all but the first frame.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   330
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   331
        [image release];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   332
        [rep release];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   333
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   334
        [splash->window setContentView: view];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   335
        [splash->window orderFrontRegardless];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   336
    }];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   337
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   338
    [pool drain];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   339
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   340
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   341
void SplashReconfigureNow(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   342
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   343
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   344
    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   345
        SplashCenter(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   346
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   347
        if (!splash->window) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   348
            return;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   349
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   350
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   351
        [splash->window orderOut:nil];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   352
        [splash->window setFrame: NSMakeRect(splash->x, splash->y, splash->width, splash->height)
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   353
                         display: NO];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   354
    }];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   355
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   356
    [pool drain];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   357
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   358
    SplashRedrawWindow(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   359
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   360
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   361
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   362
SplashEventLoop(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   363
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   364
    /* we should have splash _locked_ on entry!!! */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   365
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   366
    while (1) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   367
        struct pollfd pfd[1];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   368
        int timeout = -1;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   369
        int ctl = splash->controlpipe[0];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   370
        int rc;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   371
        int pipes_empty;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   372
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   373
        pfd[0].fd = ctl;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   374
        pfd[0].events = POLLIN | POLLPRI;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   375
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   376
        errno = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   377
        if (splash->isVisible>0 && SplashIsStillLooping(splash)) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   378
            timeout = splash->time + splash->frames[splash->currentFrame].delay
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   379
                - SplashTime();
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   380
            if (timeout < 0) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   381
                timeout = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   382
            }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   383
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   384
        SplashUnlock(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   385
        rc = poll(pfd, 1, timeout);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   386
        SplashLock(splash);
22312
dd65107de257 8023057: Enhance start up image display
vadim
parents: 18232
diff changeset
   387
        if (splash->isVisible > 0 && splash->currentFrame >= 0 &&
dd65107de257 8023057: Enhance start up image display
vadim
parents: 18232
diff changeset
   388
                SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) {
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   389
            SplashNextFrame(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   390
            SplashRedrawWindow(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   391
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   392
        if (rc <= 0) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   393
            errno = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   394
            continue;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   395
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   396
        pipes_empty = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   397
        while(!pipes_empty) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   398
            char buf;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   399
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   400
            pipes_empty = 1;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   401
            if (read(ctl, &buf, sizeof(buf)) > 0) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   402
                pipes_empty = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   403
                switch (buf) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   404
                case SPLASHCTL_UPDATE:
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   405
                    if (splash->isVisible>0) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   406
                        SplashRedrawWindow(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   407
                    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   408
                    break;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   409
                case SPLASHCTL_RECONFIGURE:
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   410
                    if (splash->isVisible>0) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   411
                        SplashReconfigureNow(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   412
                    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   413
                    break;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   414
                case SPLASHCTL_QUIT:
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   415
                    return;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   416
                }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   417
            }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   418
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   419
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   420
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   421
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   422
void *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   423
SplashScreenThread(void *param) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   424
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   425
    Splash *splash = (Splash *) param;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   426
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   427
    SplashLock(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   428
    pipe(splash->controlpipe);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   429
    fcntl(splash->controlpipe[0], F_SETFL,
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   430
        fcntl(splash->controlpipe[0], F_GETFL, 0) | O_NONBLOCK);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   431
    splash->time = SplashTime();
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   432
    splash->currentFrame = 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   433
    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   434
        SplashCenter(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   435
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   436
        splash->window = (void*) [[NSWindow alloc]
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   437
            initWithContentRect: NSMakeRect(splash->x, splash->y, splash->width, splash->height)
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   438
                      styleMask: NSBorderlessWindowMask
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   439
                        backing: NSBackingStoreBuffered
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   440
                          defer: NO
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   441
                         screen: SplashNSScreen()];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   442
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   443
        [splash->window setOpaque: NO];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   444
        [splash->window setBackgroundColor: [NSColor clearColor]];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   445
    }];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   446
    fflush(stdout);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   447
    if (splash->window) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   448
        [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   449
            [splash->window orderFrontRegardless];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   450
        }];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   451
        SplashRedrawWindow(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   452
        SplashEventLoop(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   453
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   454
    SplashUnlock(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   455
    SplashDone(splash);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   456
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   457
    splash->isVisible=-1;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   458
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   459
    [pool drain];
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   460
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   461
    return 0;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   462
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   463
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   464
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   465
sendctl(Splash * splash, char code) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   466
    if (splash && splash->controlpipe[1]) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   467
        write(splash->controlpipe[1], &code, 1);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   468
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   469
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   470
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   471
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   472
SplashClosePlatform(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   473
    sendctl(splash, SPLASHCTL_QUIT);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   474
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   475
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   476
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   477
SplashUpdate(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   478
    sendctl(splash, SPLASHCTL_UPDATE);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   479
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   480
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   481
void
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   482
SplashReconfigure(Splash * splash) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   483
    sendctl(splash, SPLASHCTL_RECONFIGURE);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   484
}
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   485
41776
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   486
NSString* findScaledImageName(NSString *fileName, NSUInteger dotIndex, NSString *strToAppend) {
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   487
    NSString *fileName2x = nil;
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   488
    if (dotIndex == NSNotFound) {
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   489
        fileName2x = [fileName stringByAppendingString: strToAppend];
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   490
    } else {
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   491
        fileName2x = [fileName substringToIndex: dotIndex];
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   492
        fileName2x = [fileName2x stringByAppendingString: strToAppend];
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   493
        fileName2x = [fileName2x stringByAppendingString:
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   494
                      [fileName substringFromIndex: dotIndex]];
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   495
    }
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   496
    return fileName2x;
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   497
}
71e2575dd727 8151787: Unify the HiDPI splash screen image naming convention
rchamyal
parents: 36907
diff changeset
   498