[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] WXGui behaving badly on some systems

From: Sylvain Munaut
Subject: Re: [Discuss-gnuradio] WXGui behaving badly on some systems
Date: Wed, 5 Oct 2016 23:35:44 +0200

Hi Marcus,

>     GL.glCallList(self._grid_compiled_list_id)
>   File "/usr/lib/python2.7/dist-packages/OpenGL/error.py", line 208, in
> glCheckError
>     baseOperation = baseOperation,
> OpenGL.error.GLError: GLError(
>     err = 1285,
>     description = 'out of memory',
>     baseOperation = glCallList,
>     cArguments = (3L,)
> They have an older system, with 2G of memory, but with 12G of swap.

RAM doesn't matter.

This is merely a reflection of buggy OpenGL drivers.
Display Lists are an outdated OpenGL feature that's most likely never
ever tested in any modern driver and so my guess is that they leak
resources when regenerating it and at somepoint they run out of
something ...

Try the patch below. It effectively disables the use of display list
and just issues all the commands every draw ... which for any kind of
modern GPU should really not be a problem.

diff --git a/gr-wxgui/python/wxgui/plotter/plotter_base.py
index ca90490..c4dbd26 100644
--- a/gr-wxgui/python/wxgui/plotter/plotter_base.py
+++ b/gr-wxgui/python/wxgui/plotter/plotter_base.py
@@ -49,20 +49,14 @@ class gl_cache(object):
                To be called when gl initializes.
                Create a new compiled list.
-               self._grid_compiled_list_id = GL.glGenLists(1)
+               pass

        def draw(self):
                Draw the gl stuff using a compiled list.
                If changed, reload the compiled list.
-               if self.changed():
-                       GL.glNewList(self._grid_compiled_list_id, GL.GL_COMPILE)
-                       self._draw()
-                       GL.glEndList()
-                       self.changed(False)
-               #draw the grid
-               GL.glCallList(self._grid_compiled_list_id)
+               self._draw()

        def changed(self, state=None):



reply via email to

[Prev in Thread] Current Thread [Next in Thread]