Loading cmds/bootanimation/BootAnimation.cpp +26 −7 Original line number Diff line number Diff line Loading @@ -107,8 +107,6 @@ BootAnimation::BootAnimation() : Thread(false), mClockEnabled(true), mTimeIsAccu mSystemBoot = !property_get_bool(BOOT_COMPLETED_PROP_NAME, 0); } BootAnimation::~BootAnimation() {} void BootAnimation::onFirstRef() { status_t err = mSession->linkToComposerDeath(this); ALOGE_IF(err, "linkToComposerDeath failed (%s) ", strerror(-err)); Loading Loading @@ -778,11 +776,12 @@ bool BootAnimation::preloadZip(Animation& animation) } // Create and initialize audioplay if there is a wav file in any of the animations. // Do it on a separate thread so we don't hold up the animation intro. if (partWithAudio != NULL) { ALOGD("found audio.wav, creating playback engine"); if (!audioplay::create(partWithAudio->audioData, partWithAudio->audioLength)) { return false; } mInitAudioThread = new InitAudioThread(partWithAudio->audioData, partWithAudio->audioLength); mInitAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); } zip->endIteration(cookie); Loading Loading @@ -850,9 +849,14 @@ bool BootAnimation::movie() playAnimation(*animation); if (mTimeCheckThread != NULL) { if (mTimeCheckThread != nullptr) { mTimeCheckThread->requestExit(); mTimeCheckThread = NULL; mTimeCheckThread = nullptr; } if (mInitAudioThread != nullptr) { mInitAudioThread->requestExit(); mInitAudioThread = nullptr; } releaseAnimation(animation); Loading Loading @@ -892,6 +896,10 @@ bool BootAnimation::playAnimation(const Animation& animation) // only play audio file the first time we animate the part if (r == 0 && part.audioData && playSoundsAllowed()) { ALOGD("playing clip for part%d, size=%d", (int) i, part.audioLength); // Block until the audio engine is finished initializing. if (mInitAudioThread != nullptr) { mInitAudioThread->join(); } audioplay::playClip(part.audioData, part.audioLength); } Loading Loading @@ -1185,6 +1193,17 @@ status_t BootAnimation::TimeCheckThread::readyToRun() { return NO_ERROR; } BootAnimation::InitAudioThread::InitAudioThread(uint8_t* exampleAudioData, int exampleAudioLength) : Thread(false), mExampleAudioData(exampleAudioData), mExampleAudioLength(exampleAudioLength) {} bool BootAnimation::InitAudioThread::threadLoop() { audioplay::create(mExampleAudioData, mExampleAudioLength); // Exit immediately return false; } // --------------------------------------------------------------------------- } Loading cmds/bootanimation/BootAnimation.h +13 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ class BootAnimation : public Thread, public IBinder::DeathRecipient { public: BootAnimation(); virtual ~BootAnimation(); sp<SurfaceComposerClient> session() const; Loading Loading @@ -68,6 +67,16 @@ private: BootAnimation* mBootAnimation; }; class InitAudioThread : public Thread { public: InitAudioThread(uint8_t* exampleAudioData, int mExampleAudioLength); private: virtual bool threadLoop(); uint8_t* mExampleAudioData; int mExampleAudioLength; }; struct Texture { GLint w; GLint h; Loading Loading @@ -156,7 +165,8 @@ private: bool mSystemBoot; String8 mZipFileName; SortedVector<String8> mLoadedFiles; sp<TimeCheckThread> mTimeCheckThread; sp<TimeCheckThread> mTimeCheckThread = nullptr; sp<InitAudioThread> mInitAudioThread = nullptr; }; // --------------------------------------------------------------------------- Loading Loading
cmds/bootanimation/BootAnimation.cpp +26 −7 Original line number Diff line number Diff line Loading @@ -107,8 +107,6 @@ BootAnimation::BootAnimation() : Thread(false), mClockEnabled(true), mTimeIsAccu mSystemBoot = !property_get_bool(BOOT_COMPLETED_PROP_NAME, 0); } BootAnimation::~BootAnimation() {} void BootAnimation::onFirstRef() { status_t err = mSession->linkToComposerDeath(this); ALOGE_IF(err, "linkToComposerDeath failed (%s) ", strerror(-err)); Loading Loading @@ -778,11 +776,12 @@ bool BootAnimation::preloadZip(Animation& animation) } // Create and initialize audioplay if there is a wav file in any of the animations. // Do it on a separate thread so we don't hold up the animation intro. if (partWithAudio != NULL) { ALOGD("found audio.wav, creating playback engine"); if (!audioplay::create(partWithAudio->audioData, partWithAudio->audioLength)) { return false; } mInitAudioThread = new InitAudioThread(partWithAudio->audioData, partWithAudio->audioLength); mInitAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); } zip->endIteration(cookie); Loading Loading @@ -850,9 +849,14 @@ bool BootAnimation::movie() playAnimation(*animation); if (mTimeCheckThread != NULL) { if (mTimeCheckThread != nullptr) { mTimeCheckThread->requestExit(); mTimeCheckThread = NULL; mTimeCheckThread = nullptr; } if (mInitAudioThread != nullptr) { mInitAudioThread->requestExit(); mInitAudioThread = nullptr; } releaseAnimation(animation); Loading Loading @@ -892,6 +896,10 @@ bool BootAnimation::playAnimation(const Animation& animation) // only play audio file the first time we animate the part if (r == 0 && part.audioData && playSoundsAllowed()) { ALOGD("playing clip for part%d, size=%d", (int) i, part.audioLength); // Block until the audio engine is finished initializing. if (mInitAudioThread != nullptr) { mInitAudioThread->join(); } audioplay::playClip(part.audioData, part.audioLength); } Loading Loading @@ -1185,6 +1193,17 @@ status_t BootAnimation::TimeCheckThread::readyToRun() { return NO_ERROR; } BootAnimation::InitAudioThread::InitAudioThread(uint8_t* exampleAudioData, int exampleAudioLength) : Thread(false), mExampleAudioData(exampleAudioData), mExampleAudioLength(exampleAudioLength) {} bool BootAnimation::InitAudioThread::threadLoop() { audioplay::create(mExampleAudioData, mExampleAudioLength); // Exit immediately return false; } // --------------------------------------------------------------------------- } Loading
cmds/bootanimation/BootAnimation.h +13 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ class BootAnimation : public Thread, public IBinder::DeathRecipient { public: BootAnimation(); virtual ~BootAnimation(); sp<SurfaceComposerClient> session() const; Loading Loading @@ -68,6 +67,16 @@ private: BootAnimation* mBootAnimation; }; class InitAudioThread : public Thread { public: InitAudioThread(uint8_t* exampleAudioData, int mExampleAudioLength); private: virtual bool threadLoop(); uint8_t* mExampleAudioData; int mExampleAudioLength; }; struct Texture { GLint w; GLint h; Loading Loading @@ -156,7 +165,8 @@ private: bool mSystemBoot; String8 mZipFileName; SortedVector<String8> mLoadedFiles; sp<TimeCheckThread> mTimeCheckThread; sp<TimeCheckThread> mTimeCheckThread = nullptr; sp<InitAudioThread> mInitAudioThread = nullptr; }; // --------------------------------------------------------------------------- Loading