浏览代码

fixed a few x syncronization issues

naelstrof 10 年前
父节点
当前提交
081bb6196e
共有 2 个文件被更改,包括 6 次插入1 次删除
  1. 3
    1
      main.cpp
  2. 3
    0
      x.cpp

+ 3
- 1
main.cpp 查看文件

@@ -205,11 +205,13 @@ int main( int argc, char** argv ) {
205 205
     }
206 206
     xengine->releaseCursor();
207 207
     xengine->releaseKeyboard();
208
+    // Try to process any last-second requests.
209
+    xengine->tick();
208 210
     // Clean up global classes.
209 211
     delete xengine;
210 212
     delete options;
211 213
     // Wait to make sure X11 cleans up our window before we end.
212
-    usleep( 10000 );
214
+    usleep( 100000 );
213 215
     // If we canceled the selection, return error.
214 216
     if ( state == -1 ) {
215 217
         return 1;

+ 3
- 0
x.cpp 查看文件

@@ -225,6 +225,9 @@ slop::Rectangle::~Rectangle() {
225 225
         return;
226 226
     }
227 227
     //XFreeColors( xengine->m_display, xengine->m_colormap, m_color.pixel, 1,
228
+    // Attempt to move window offscreen before trying to remove it.
229
+    XResizeWindow( xengine->m_display, m_window, 1, 1 );
230
+    XMoveWindow( xengine->m_display, m_window, 0, 0 );
228 231
     XUnmapWindow( xengine->m_display, m_window );
229 232
     XDestroyWindow( xengine->m_display, m_window );
230 233
 }