Commit 732703e6 by Geoff Lang

Don't duplicate calls to X11Window's setVisible.

Calling setVisible multiple times in a row can cause a hang while X11Window waits for events that will never be generted. Change-Id: I43af8d4c79c7010dae78aa38c9716ed5b7b02865 Reviewed-on: https://chromium-review.googlesource.com/322380Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 1a679900
...@@ -157,7 +157,8 @@ X11Window::X11Window() ...@@ -157,7 +157,8 @@ X11Window::X11Window()
TEST_EVENT(None), TEST_EVENT(None),
mDisplay(nullptr), mDisplay(nullptr),
mWindow(0), mWindow(0),
mRequestedVisualId(-1) mRequestedVisualId(-1),
mVisible(false)
{ {
} }
...@@ -167,7 +168,8 @@ X11Window::X11Window(int visualId) ...@@ -167,7 +168,8 @@ X11Window::X11Window(int visualId)
TEST_EVENT(None), TEST_EVENT(None),
mDisplay(nullptr), mDisplay(nullptr),
mWindow(0), mWindow(0),
mRequestedVisualId(visualId) mRequestedVisualId(visualId),
mVisible(false)
{ {
} }
...@@ -347,7 +349,7 @@ bool X11Window::resize(int width, int height) ...@@ -347,7 +349,7 @@ bool X11Window::resize(int width, int height)
void X11Window::setVisible(bool isVisible) void X11Window::setVisible(bool isVisible)
{ {
if (isVisible) if (mVisible != isVisible)
{ {
XMapWindow(mDisplay, mWindow); XMapWindow(mDisplay, mWindow);
...@@ -363,6 +365,7 @@ void X11Window::setVisible(bool isVisible) ...@@ -363,6 +365,7 @@ void X11Window::setVisible(bool isVisible)
XUnmapWindow(mDisplay, mWindow); XUnmapWindow(mDisplay, mWindow);
XFlush(mDisplay); XFlush(mDisplay);
} }
mVisible = isVisible;
} }
void X11Window::signalTestEvent() void X11Window::signalTestEvent()
......
...@@ -48,6 +48,7 @@ class X11Window : public OSWindow ...@@ -48,6 +48,7 @@ class X11Window : public OSWindow
Display *mDisplay; Display *mDisplay;
Window mWindow; Window mWindow;
int mRequestedVisualId; int mRequestedVisualId;
bool mVisible;
}; };
#endif // UTIL_X11_WINDOW_H #endif // UTIL_X11_WINDOW_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment