mirror of
https://gitee.com/openharmony/graphic_graphic_2d
synced 2024-11-23 07:02:25 +00:00
commit
2d61ac2123
@ -31,6 +31,7 @@ public:
|
|||||||
bool CheckExitAnimation();
|
bool CheckExitAnimation();
|
||||||
|
|
||||||
bool CheckNeedOtaCompile() const;
|
bool CheckNeedOtaCompile() const;
|
||||||
|
bool CheckNeedBundleScan() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::shared_ptr<BootCompileProgress> bootCompileProgress_;
|
std::shared_ptr<BootCompileProgress> bootCompileProgress_;
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
namespace OHOS {
|
namespace OHOS {
|
||||||
class BootCompileProgress {
|
class BootCompileProgress {
|
||||||
public:
|
public:
|
||||||
void Init(const BootAnimationConfig& config);
|
void Init(const BootAnimationConfig& config, bool needOtaCompile, bool needBundleScan);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnVsync();
|
void OnVsync();
|
||||||
@ -42,6 +42,11 @@ private:
|
|||||||
bool CreateCanvasNode();
|
bool CreateCanvasNode();
|
||||||
bool RegisterVsyncCallback();
|
bool RegisterVsyncCallback();
|
||||||
Rosen::Drawing::Brush DrawProgressPoint(int32_t idx, int32_t frameNum);
|
Rosen::Drawing::Brush DrawProgressPoint(int32_t idx, int32_t frameNum);
|
||||||
|
bool WaitParamsIfNeeded();
|
||||||
|
bool WaitBundleScanIfNeeded();
|
||||||
|
bool CheckParams();
|
||||||
|
bool CheckBundleScanParam();
|
||||||
|
bool CheckBmsStartParam();
|
||||||
|
|
||||||
int32_t windowWidth_ = 0;
|
int32_t windowWidth_ = 0;
|
||||||
int32_t windowHeight_ = 0;
|
int32_t windowHeight_ = 0;
|
||||||
@ -55,7 +60,6 @@ private:
|
|||||||
Rosen::ScreenId screenId_;
|
Rosen::ScreenId screenId_;
|
||||||
std::string displayInfo_ = "";
|
std::string displayInfo_ = "";
|
||||||
|
|
||||||
bool isBmsCompileDone_ = false;
|
|
||||||
volatile bool isUpdateOptEnd_ = false;
|
volatile bool isUpdateOptEnd_ = false;
|
||||||
|
|
||||||
std::shared_ptr<Rosen::RSSurfaceNode> rsSurfaceNode_;
|
std::shared_ptr<Rosen::RSSurfaceNode> rsSurfaceNode_;
|
||||||
@ -65,6 +69,10 @@ private:
|
|||||||
std::shared_ptr<OHOS::AppExecFwk::EventHandler> compileHandler_;
|
std::shared_ptr<OHOS::AppExecFwk::EventHandler> compileHandler_;
|
||||||
std::shared_ptr<OHOS::AppExecFwk::EventRunner> compileRunner_;
|
std::shared_ptr<OHOS::AppExecFwk::EventRunner> compileRunner_;
|
||||||
std::shared_ptr<Rosen::RSInterpolator> sharpCurve_;
|
std::shared_ptr<Rosen::RSInterpolator> sharpCurve_;
|
||||||
|
|
||||||
|
bool needOtaCompile_ = false;
|
||||||
|
bool needBundleScan_ = false;
|
||||||
|
std::set<std::string> paramNeeded_;
|
||||||
};
|
};
|
||||||
} // namespace OHOS
|
} // namespace OHOS
|
||||||
|
|
||||||
|
@ -98,4 +98,14 @@ bool BootAnimationStrategy::CheckNeedOtaCompile() const
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BootAnimationStrategy::CheckNeedBundleScan() const
|
||||||
|
{
|
||||||
|
LOGI("CheckNeedBundleScan");
|
||||||
|
if (system::GetParameter("bms.scanning_apps.status", "-1") == "1") {
|
||||||
|
LOGI("bundle scan is already done.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} // namespace OHOS
|
} // namespace OHOS
|
||||||
|
@ -56,9 +56,11 @@ void BootAssociativeDisplayStrategy::Display(int32_t duration, std::vector<BootA
|
|||||||
operator_->Init(config, screenWidth, screenHeight, duration);
|
operator_->Init(config, screenWidth, screenHeight, duration);
|
||||||
operator_->GetThread().join();
|
operator_->GetThread().join();
|
||||||
|
|
||||||
if (CheckNeedOtaCompile()) {
|
bool needOtaCompile = CheckNeedOtaCompile();
|
||||||
|
bool needBundleScan = CheckNeedBundleScan();
|
||||||
|
if (needOtaCompile || needBundleScan) {
|
||||||
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
||||||
bootCompileProgress_->Init(config);
|
bootCompileProgress_->Init(config, needOtaCompile, needBundleScan);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!CheckExitAnimation()) {
|
while (!CheckExitAnimation()) {
|
||||||
|
@ -50,9 +50,11 @@ void BootCompatibleDisplayStrategy::Display(int32_t duration, std::vector<BootAn
|
|||||||
operator_->Init(config, screenWidth, screenHeight, duration);
|
operator_->Init(config, screenWidth, screenHeight, duration);
|
||||||
operator_->GetThread().join();
|
operator_->GetThread().join();
|
||||||
|
|
||||||
if (CheckNeedOtaCompile()) {
|
bool needOtaCompile = CheckNeedOtaCompile();
|
||||||
|
bool needBundleScan = CheckNeedBundleScan();
|
||||||
|
if (needOtaCompile || needBundleScan) {
|
||||||
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
||||||
bootCompileProgress_->Init(config);
|
bootCompileProgress_->Init(config, needOtaCompile, needBundleScan);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,11 +59,22 @@ namespace {
|
|||||||
{ { 0.5f, 0.2f }, { 0.2f, 1.0f }, { 1.0f, 0.5f } },
|
{ { 0.5f, 0.2f }, { 0.2f, 1.0f }, { 1.0f, 0.5f } },
|
||||||
{ { 1.0f, 0.5f }, { 0.5f, 0.2f }, { 0.2f, 1.0f } },
|
{ { 1.0f, 0.5f }, { 0.5f, 0.2f }, { 0.2f, 1.0f } },
|
||||||
};
|
};
|
||||||
|
constexpr const char* BUNDLE_SCAN_PARAM_NAME = "bms.scanning_apps.status";
|
||||||
|
constexpr const int BUNDLE_SCAN_WAITING_TIMEOUT = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BootCompileProgress::Init(const BootAnimationConfig& config)
|
void BootCompileProgress::Init(const BootAnimationConfig& config, bool needOtaCompile, bool needBundleScan)
|
||||||
{
|
{
|
||||||
LOGI("ota compile, screenId: " BPUBU64 "", config.screenId);
|
LOGI("ota compile, screenId: " BPUBU64 "", config.screenId);
|
||||||
|
needOtaCompile_ = needOtaCompile;
|
||||||
|
needBundleScan_ = needBundleScan;
|
||||||
|
paramNeeded_.clear();
|
||||||
|
if (needOtaCompile_) {
|
||||||
|
paramNeeded_.insert(BMS_COMPILE_STATUS);
|
||||||
|
}
|
||||||
|
if (needBundleScan_) {
|
||||||
|
paramNeeded_.insert(BUNDLE_SCAN_PARAM_NAME);
|
||||||
|
}
|
||||||
screenId_ = config.screenId;
|
screenId_ = config.screenId;
|
||||||
rotateDegree_ = config.rotateDegree;
|
rotateDegree_ = config.rotateDegree;
|
||||||
Rosen::RSInterfaces& interface = Rosen::RSInterfaces::GetInstance();
|
Rosen::RSInterfaces& interface = Rosen::RSInterfaces::GetInstance();
|
||||||
@ -121,13 +132,13 @@ bool BootCompileProgress::CreateCanvasNode()
|
|||||||
|
|
||||||
bool BootCompileProgress::RegisterVsyncCallback()
|
bool BootCompileProgress::RegisterVsyncCallback()
|
||||||
{
|
{
|
||||||
if (system::GetParameter(BMS_COMPILE_STATUS, "-1") == BMS_COMPILE_STATUS_END) {
|
if (CheckParams()) {
|
||||||
LOGI("bms compile is already done.");
|
LOGI("all param status are COMPLETED");
|
||||||
compileRunner_->Stop();
|
compileRunner_->Stop();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!WaitParamsIfNeeded()) {
|
||||||
if (!WaitBmsStartIfNeeded()) {
|
LOGI("no param is ready, progress bar stop");
|
||||||
compileRunner_->Stop();
|
compileRunner_->Stop();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -170,9 +181,70 @@ bool BootCompileProgress::RegisterVsyncCallback()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BootCompileProgress::CheckParams()
|
||||||
|
{
|
||||||
|
bool check1 = CheckBmsStartParam();
|
||||||
|
bool check2 = CheckBundleScanParam();
|
||||||
|
if (check1 && check2) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BootCompileProgress::CheckBundleScanParam()
|
||||||
|
{
|
||||||
|
if (!needBundleScan_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (system::GetParameter(BUNDLE_SCAN_PARAM_NAME, "-1") == "1") {
|
||||||
|
paramNeeded_.erase(BUNDLE_SCAN_PARAM_NAME);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BootCompileProgress::CheckBmsStartParam()
|
||||||
|
{
|
||||||
|
if (!needOtaCompile_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (system::GetParameter(BMS_COMPILE_STATUS, "-1") == BMS_COMPILE_STATUS_END) {
|
||||||
|
paramNeeded_.erase(BMS_COMPILE_STATUS);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BootCompileProgress::WaitParamsIfNeeded()
|
||||||
|
{
|
||||||
|
bool wait1 = WaitBmsStartIfNeeded();
|
||||||
|
bool wait2 = WaitBundleScanIfNeeded();
|
||||||
|
if (!wait1 && !wait2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BootCompileProgress::WaitBundleScanIfNeeded()
|
||||||
|
{
|
||||||
|
if (!needBundleScan_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (WaitParameter(BUNDLE_SCAN_PARAM_NAME, "0", BUNDLE_SCAN_WAITING_TIMEOUT) != 0) {
|
||||||
|
paramNeeded_.erase(BUNDLE_SCAN_PARAM_NAME);
|
||||||
|
LOGE("waiting bundle scan failed.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool BootCompileProgress::WaitBmsStartIfNeeded()
|
bool BootCompileProgress::WaitBmsStartIfNeeded()
|
||||||
{
|
{
|
||||||
|
if (!needOtaCompile_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (WaitParameter(BMS_COMPILE_STATUS, BMS_COMPILE_STATUS_BEGIN.c_str(), WAITING_BMS_TIMEOUT) != 0) {
|
if (WaitParameter(BMS_COMPILE_STATUS, BMS_COMPILE_STATUS_BEGIN.c_str(), WAITING_BMS_TIMEOUT) != 0) {
|
||||||
|
paramNeeded_.erase(BMS_COMPILE_STATUS);
|
||||||
LOGE("waiting bms start oat compile failed.");
|
LOGE("waiting bms start oat compile failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -250,8 +322,8 @@ void BootCompileProgress::DrawCompileProgress()
|
|||||||
|
|
||||||
void BootCompileProgress::UpdateCompileProgress()
|
void BootCompileProgress::UpdateCompileProgress()
|
||||||
{
|
{
|
||||||
if (!isBmsCompileDone_) {
|
(void)CheckParams();
|
||||||
isBmsCompileDone_ = system::GetParameter(BMS_COMPILE_STATUS, "-1") == BMS_COMPILE_STATUS_END;
|
if (paramNeeded_.size() > 0) {
|
||||||
int64_t now =
|
int64_t now =
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
|
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
|
||||||
.count();
|
.count();
|
||||||
|
@ -44,9 +44,11 @@ void BootIndependentDisplayStrategy::Display(int32_t duration, std::vector<BootA
|
|||||||
op->GetThread().join();
|
op->GetThread().join();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckNeedOtaCompile()) {
|
bool needOtaCompile = CheckNeedOtaCompile();
|
||||||
|
bool needBundleScan = CheckNeedBundleScan();
|
||||||
|
if (needOtaCompile || needBundleScan) {
|
||||||
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
bootCompileProgress_ = std::make_shared<BootCompileProgress>();
|
||||||
bootCompileProgress_->Init(screenConfig);
|
bootCompileProgress_->Init(screenConfig, needOtaCompile, needBundleScan);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!CheckExitAnimation()) {
|
while (!CheckExitAnimation()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user