Author: ArcRiley
Date: 2007-07-05 17:10:41 -0400 (Thu, 05 Jul 2007)
New Revision: 369

Modified:
   trunk/pysoy/src/_core-x11/Window.pxi
   trunk/pysoy/src/_core-x11/glx.pxd
Log:
Fixing #261 (added soy.Window destroy function)


Modified: trunk/pysoy/src/_core-x11/Window.pxi
===================================================================
--- trunk/pysoy/src/_core-x11/Window.pxi        2007-07-05 09:00:08 UTC (rev 
368)
+++ trunk/pysoy/src/_core-x11/Window.pxi        2007-07-05 21:10:41 UTC (rev 
369)
@@ -65,17 +65,24 @@
     glx.XSetWMProtocols(_display, self._windowID, &_atom, 1)
     glx.XSetStandardProperties(_display, self._windowID, title, title, 
                                0, NULL, 0, NULL)
-    glx.XMapRaised(_display, self._windowID)
+    glx.XMapWindow(_display, self._windowID)
+    _sleep(10) # Let X11 finish before returning to Python
     _windows.lock()
     _windows.append(<void *>self)
     _windows.unlock()
 
 
   def __dealloc__(self) :
+    cdef glx.Display *_display
+    _display = glx.DisplayOfScreen(self._screen._screen)
     # Delete the window here
     _windows.lock()
     _windows.remove(<void *>self)
     _windows.unlock()
+    glx.XUnmapWindow(_display, self._windowID)
+    glx.glXDestroyContext(_display, self._glxContext)
+    glx.XDestroyWindow(_display, self._windowID)
+    _sleep(10) # Let X11 finish before returning to Python
 
   cdef void _render(self) :
     cdef int i

Modified: trunk/pysoy/src/_core-x11/glx.pxd
===================================================================
--- trunk/pysoy/src/_core-x11/glx.pxd   2007-07-05 09:00:08 UTC (rev 368)
+++ trunk/pysoy/src/_core-x11/glx.pxd   2007-07-05 21:10:41 UTC (rev 369)
@@ -264,42 +264,46 @@
     Colormap      colormap
     Cursor        cursor
 
-  cdef int      glXQueryVersion( Display*, int *maj, int *min )
+  cdef int          glXQueryVersion        ( Display*, int *maj, int *min )
 
-  cdef Display     *XOpenDisplay( char* )
-  cdef int          XCloseDisplay( Display* )
-  cdef char        *DisplayString( Display* )
-  cdef int          DefaultScreen( Display* )
-  cdef int          ScreenCount( Display* )
-  cdef Screen      *ScreenOfDisplay( Display*, int )
-  cdef Display     *DisplayOfScreen( Screen* )
-  cdef Window       RootWindowOfScreen( Screen* )
+  cdef Display     *XOpenDisplay           ( char* )
+  cdef int          XCloseDisplay          ( Display* )
+  cdef char        *DisplayString          ( Display* )
+  cdef int          DefaultScreen          ( Display* )
+  cdef int          ScreenCount            ( Display* )
+  cdef Screen      *ScreenOfDisplay        ( Display*, int )
+  cdef Display     *DisplayOfScreen        ( Screen* )
+  cdef Window       RootWindowOfScreen     ( Screen* )
   cdef Colormap     DefaultColormapOfScreen( Screen* )
-  cdef int          DefaultDepthOfScreen( Screen* )
-  cdef GC           DefaultGCOfScreen( Screen* )
-  cdef Visual      *DefaultVisualOfScreen( Screen* )
-  cdef int          WidthOfScreen( Screen* )
-  cdef int          HeightOfScreen( Screen* )
-  cdef int          WidthMMOfScreen( Screen* )
-  cdef int          HeightMMOfScreen( Screen* )
-  cdef int          PlanesOfScreen( Screen* )
-  cdef XVisualInfo *glXChooseVisual ( Display*, int, int* )
-  cdef GLXContext   glXCreateContext( Display*, XVisualInfo*,
-                                      GLXContext, Bool )
-  cdef Bool         glXMakeCurrent( Display*, Window, GLXContext )
-  cdef void         glXSwapBuffers( Display*, Window )
-  cdef Colormap     XCreateColormap( Display*, Window, Visual*, int )
-  cdef Window       XCreateWindow   ( Display*, Window, int, int, 
-                                      unsigned int, unsigned int, 
-                                      unsigned int, int, 
-                                      unsigned int, Visual*, 
-                                      unsigned long,
-                                      XSetWindowAttributes* )
-  cdef Atom         XInternAtom( Display*, char*, Bool )
-  cdef int          XSetWMProtocols( Display*, Window, Atom*, int )
-  cdef int          XSetStandardProperties( Display*, Window, char*, char*,
-                                            Pixmap, char**, int, XSizeHints* )
-  cdef int          XMapRaised( Display*, Window )
+  cdef int          DefaultDepthOfScreen   ( Screen* )
+  cdef GC           DefaultGCOfScreen      ( Screen* )
+  cdef Visual      *DefaultVisualOfScreen  ( Screen* )
+  cdef int          WidthOfScreen          ( Screen* )
+  cdef int          HeightOfScreen         ( Screen* )
+  cdef int          WidthMMOfScreen        ( Screen* )
+  cdef int          HeightMMOfScreen       ( Screen* )
+  cdef int          PlanesOfScreen         ( Screen* )
+  cdef XVisualInfo *glXChooseVisual        ( Display*, int, int* )
+  cdef GLXContext   glXCreateContext       ( Display*, XVisualInfo*,
+                                             GLXContext, Bool )
+  cdef void         glXDestroyContext      ( Display*, GLXContext )
+  cdef Bool         glXMakeCurrent         ( Display*, Window, GLXContext )
+  cdef void         glXSwapBuffers         ( Display*, Window )
+  cdef Colormap     XCreateColormap        ( Display*, Window, Visual*, int )
+  cdef Window       XCreateWindow          ( Display*, Window, int, int, 
+                                             unsigned int, unsigned int, 
+                                             unsigned int, int, 
+                                             unsigned int, Visual*, 
+                                             unsigned long,
+                                             XSetWindowAttributes* )
+  cdef int          XDestroyWindow         ( Display*, Window )
+  cdef Atom         XInternAtom            ( Display*, char*, Bool )
+  cdef int          XSetWMProtocols        ( Display*, Window, Atom*, int )
+  cdef int          XSetStandardProperties ( Display*, Window, char*, char*,
+                                             Pixmap, char**, int, XSizeHints* )
+  cdef int          XMapWindow             ( Display*, Window )
+  cdef int          XMapRaised             ( Display*, Window )
+  cdef int          XUnmapWindow           ( Display*, Window )
   
   
 cdef extern from "X11/extensions/xf86vmode.h" :

_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to