# HG changeset patch # User vadim # Date 1379062344 -14400 # Node ID 2b5afe7f00cd8183e2fc14a961fa2fbc88f862c9 # Parent a046c79c8c9aad9e6de4b0196bf57f0a0e4d0535 8023057: Enhance start up image display Reviewed-by: anthony, serb, mschoene diff -r a046c79c8c9a -r 2b5afe7f00cd src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m --- a/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Thu Aug 15 11:46:56 2013 -0400 +++ b/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Fri Sep 13 12:52:24 2013 +0400 @@ -290,8 +290,8 @@ SplashUnlock(splash); rc = poll(pfd, 1, timeout); SplashLock(splash); - if (splash->isVisible>0 && SplashTime() >= splash->time + - splash->frames[splash->currentFrame].delay) { + if (splash->isVisible > 0 && splash->currentFrame >= 0 && + SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) { SplashNextFrame(splash); SplashRedrawWindow(splash); } diff -r a046c79c8c9a -r 2b5afe7f00cd src/share/native/sun/awt/splashscreen/splashscreen_impl.c --- a/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Thu Aug 15 11:46:56 2013 -0400 +++ b/src/share/native/sun/awt/splashscreen/splashscreen_impl.c Fri Sep 13 12:52:24 2013 +0400 @@ -111,8 +111,9 @@ int SplashIsStillLooping(Splash * splash) { - if (splash->currentFrame < 0) + if (splash->currentFrame < 0) { return 0; + } return splash->loopCount != 1 || splash->currentFrame + 1 < splash->frameCount; } @@ -121,17 +122,22 @@ SplashUpdateScreenData(Splash * splash) { ImageRect srcRect, dstRect; + if (splash->currentFrame < 0) { + return; + } initRect(&srcRect, 0, 0, splash->width, splash->height, 1, splash->width * sizeof(rgbquad_t), splash->frames[splash->currentFrame].bitmapBits, &splash->imageFormat); - if (splash->screenData) + if (splash->screenData) { free(splash->screenData); + } splash->screenStride = splash->width * splash->screenFormat.depthBytes; - if (splash->byteAlignment > 1) + if (splash->byteAlignment > 1) { splash->screenStride = (splash->screenStride + splash->byteAlignment - 1) & ~(splash->byteAlignment - 1); + } splash->screenData = malloc(splash->height * splash->screenStride); initRect(&dstRect, 0, 0, splash->width, splash->height, 1, splash->screenStride, splash->screenData, &splash->screenFormat); @@ -146,16 +152,19 @@ void SplashNextFrame(Splash * splash) { - if (splash->currentFrame < 0) + if (splash->currentFrame < 0) { return; + } do { - if (!SplashIsStillLooping(splash)) + if (!SplashIsStillLooping(splash)) { return; + } splash->time += splash->frames[splash->currentFrame].delay; if (++splash->currentFrame >= splash->frameCount) { splash->currentFrame = 0; - if (splash->loopCount > 0) + if (splash->loopCount > 0) { splash->loopCount--; + } } } while (splash->time + splash->frames[splash->currentFrame].delay - SplashTime() <= 0); @@ -183,8 +192,9 @@ pSrc += pSrcRect->depthBytes; ++i; } - if (i >= pSrcRect->numSamples) + if (i >= pSrcRect->numSamples) { break; + } i0 = i; while (i < pSrcRect->numSamples && getRGBA(pSrc, pSrcRect->format) >= ALPHA_THRESHOLD) { diff -r a046c79c8c9a -r 2b5afe7f00cd src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c --- a/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Thu Aug 15 11:46:56 2013 -0400 +++ b/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Fri Sep 13 12:52:24 2013 +0400 @@ -577,8 +577,8 @@ SplashUnlock(splash); rc = poll(pfd, 2, timeout); SplashLock(splash); - if (splash->isVisible>0 && SplashTime() >= splash->time + - splash->frames[splash->currentFrame].delay) { + if (splash->isVisible > 0 && splash->currentFrame >= 0 && + SplashTime() >= splash->time + splash->frames[splash->currentFrame].delay) { SplashNextFrame(splash); SplashUpdateShape(splash); SplashRedrawWindow(splash);