X11 only: Free XVisualInfo structures when they are not needed
authorSven Panne <sven.panne@aedion.de>
Tue, 5 Jul 2005 12:32:56 +0000 (12:32 +0000)
committerSven Panne <sven.panne@aedion.de>
Tue, 5 Jul 2005 12:32:56 +0000 (12:32 +0000)
anymore, fixing a space leak. Not perfect for menus yet...

git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@663 7f0cb862-5218-0410-a997-914c9d46530a

ChangeLog
src/freeglut_state.c
src/freeglut_window.c

index 73d94f6..e4cdea1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1096,3 +1096,6 @@ fixes bug #961938 (Executable bit set on non exe files).
 (284) Handle modifiers in MotionNotify events, too. This fixes bug
 #1227920 (glutGetModifiers not set/allowed in mouse callbacks). In
 addition, some related cleanup has been done.
+
+(285) X11 only: Free XVisualInfo structures when they are not needed
+anymore, fixing a space leak. Not perfect for menus yet...
index ff375b9..93a3f1b 100644 (file)
@@ -260,7 +260,15 @@ int FGAPIENTRY glutGet( GLenum eWhat )
 
     /* I do not know yet if there will be a fgChooseVisual() function for Win32 */
     case GLUT_DISPLAY_MODE_POSSIBLE:
-        return( fgChooseVisual() == NULL ? 0 : 1 );
+    {
+        XVisualInfo* visualInfo = fgChooseVisual();
+        if ( visualInfo == NULL ) {
+            return 0;
+        } else {
+            XFree( visualInfo );
+            return 1;
+        }
+    }
 
     /* This is system-dependant */
     case GLUT_WINDOW_FORMAT_ID:
index d424969..a469866 100644 (file)
@@ -618,6 +618,7 @@ void fgCloseWindow( SFG_Window* window )
 #if TARGET_HOST_UNIX_X11
 
     glXDestroyContext( fgDisplay.Display, window->Window.Context );
+    XFree( window->Window.VisualInfo );
     XDestroyWindow( fgDisplay.Display, window->Window.Handle );
     XFlush( fgDisplay.Display ); /* XXX Shouldn't need this */