From f0f75553cec8e60354c1df893ce64f4699f5c41e Mon Sep 17 00:00:00 2001 From: Baptiste DURAND Date: Fri, 24 Oct 2014 16:30:17 +0200 Subject: [PATCH] Fix Handle correctly the destruction of a windows #311 BUG-Tizen=TC1835 Change-Id: Iaa4b5317895848c104ac749337a3727bc00bacfa Signed-off-by: Baptiste DURAND --- src/ozone/wayland/display.cc | 2 +- src/ozone/wayland/display_poll_thread.cc | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ozone/wayland/display.cc b/src/ozone/wayland/display.cc index 04a76c4..c88ac34 100644 --- a/src/ozone/wayland/display.cc +++ b/src/ozone/wayland/display.cc @@ -370,7 +370,7 @@ void WaylandDisplay::Terminate() { STLDeleteValues(&widget_map_); widget_map_.clear(); } - + StopProcessingEvents(); for (std::list::iterator i = input_list_.begin(); i != input_list_.end(); ++i) { delete *i; diff --git a/src/ozone/wayland/display_poll_thread.cc b/src/ozone/wayland/display_poll_thread.cc index 05e5216..2e9b612 100644 --- a/src/ozone/wayland/display_poll_thread.cc +++ b/src/ozone/wayland/display_poll_thread.cc @@ -66,6 +66,7 @@ WaylandDisplayPollThread::WaylandDisplayPollThread(wl_display* display) WaylandDisplayPollThread::~WaylandDisplayPollThread() { DCHECK(!polling_.IsSignaled()); + StopProcessingEvents(); Stop(); } @@ -82,6 +83,7 @@ void WaylandDisplayPollThread::StartProcessingEvents() { void WaylandDisplayPollThread::StopProcessingEvents() { if (polling_.IsSignaled()) stop_polling_.Signal(); + Stop(); } void WaylandDisplayPollThread::DisplayRun(WaylandDisplayPollThread* data) { @@ -110,7 +112,7 @@ void WaylandDisplayPollThread::DisplayRun(WaylandDisplayPollThread* data) { // Adopted from: // http://cgit.freedesktop.org/wayland/weston/tree/clients/window.c#n5531. - while (1) { + while (!data->stop_polling_.IsSignaled()) { wl_display_dispatch_pending(data->display_); ret = wl_display_flush(data->display_); if (ret < 0 && errno == EAGAIN) { @@ -161,6 +163,7 @@ void WaylandDisplayPollThread::DisplayRun(WaylandDisplayPollThread* data) { close(epoll_fd); data->polling_.Reset(); data->stop_polling_.Reset(); + LOG(INFO) << "End of event task Signal."; } } // namespace ozonewayland -- 2.7.4