std::string appid_;
AppState state_ = AS_NONE;
WinStatus w_status_ = WS_NONE;
+ WinStatus w_pending_status_ = WS_NONE;
std::shared_ptr<EcoreHandler> handler_;
std::unique_ptr<WaylandHandler> wl_handler_;
IAppCoreUi* core_ui_delegator_ = nullptr;
return;
unsigned int win_id = parent_->GetMainWindow();
+ if (win_id == 0) {
+ _W("Not found main window. pending raise win");
+ w_pending_status_ = WS_RESUME;
+ return;
+ }
+
_I("Raise window: %u", win_id);
handler_->RaiseWin(win_id);
}
if (!(hint_ & HINT_WINDOW_STACK_CONTROL))
return;
+
+ if (winnode_list_.empty()) {
+ _W("Not found window. pending pause win");
+ w_pending_status_ = WS_PAUSE;
+ return;
+ }
+
_D("Pause window");
for (auto& i : winnode_list_) {
_D("Pause window: %u", i->win_);
unsigned int surf = static_cast<unsigned int>(ev->data[0]);
_D("[EVENT_TEST][EVENT] GET SHOW EVENT!!!. WIN: %u, %u", win, surf);
- if (!impl_->FindWin(win))
+ if (!impl_->FindWin(win)) {
impl_->AddWin(win, surf);
+ if (impl_->winnode_list_.size() == 1 &&
+ impl_->w_pending_status_ == Impl::WS_PAUSE) {
+ _W("Process a pending pause window request");
+ impl_->PauseWin();
+ }
+
+ impl_->w_pending_status_ = Impl::WS_NONE;
+ }
else
impl_->UpdateWin(win, surf, Impl::VT_NONE);