Archives April 2014

Found the source of SegFaults on AMD + FreeGLUT

So the source of the segfaults that I'm seeing on fglrx and FreeGLUT on Kubuntu 14.04 has come to light. It's a known issue with the registration of FreeGLUT and fglrx at-exit handers (at the C level). You can work around it in your own code with PyOpenGL 3.1.0b3+ (which is still pending release) using:

            if fgDeinitialize: fgDeinitialize(False)
        except NameError as err:
            pass # Older PyOpenGL, you may see a seg-fault here...
        import sys
        sys.exit( 0 )

Where fgDeinitialize is available in the GLUT namespace.

Continue reading

PyOpenGL test_core on 2.7, 3.3 and 3.4

I just finished doing a clean test run across those 3 releases of Python with each of the 8 major config flags on/off (i.e. 48 runs of the test suite). As expected, almost all of the failures were in Python 3.x, and mostly related to unicode, where COPY_ON_ERROR generated failures when a unicode string was passed in; but those were almost all *usage* errors (i.e. errors in the test suite).

However, a nasty real bug in the non-accelerated buffer handler was found and is now fixed (the accelerated code uses the C API directly, so it ...

Continue reading

Ubuntu Configuration for Inspiron 15r Running Hot

So you have a Dell Ubuntu 14.04 Laptop and it is running way too hot. You can configure it to run at a reasonable level using i8kmon. As with anything heat related, be careful. If you miss-configure the machine you are likely to wind up with a fried machine!

You create a file called /etc/i8kmon.conf and put the following in it:

set config(daemon)      0

# Automatic fan control, override with --auto option
set config(auto)        1

# Report status on stdout, override with --verbose option
set config(verbose) 1

# Status check timeout (seconds), override with --timeout option
set ...

Continue reading

Auto-generating Output Declarations

So the good news is that I've now got far more PyOpenGL output parameters automatically wrapped such that they can be passed in or automatically generated. That drops a *lot* of the manually maintained code. OpenGLContext works with the revisions, but the revision currently does *not* support non-contiguous input arrays (basically the cleanup included removing manually maintained code that said "this is an input array, so allow it to be non-contiguous"). I'll be moving the logic to doing that wrapping into the run-time eventually.

Upshot, however, is that there are a lot of changes, and while they are ...

Continue reading

Enums and Output Variables

Walter on PyOpenGL Users pointed me at the chromium "regal" tool, which has a table of constant definitions for output parameter sizings. I have a similar mechanism inside PyOpenGL's source code, so I parsed the table out of regal and used it to spot and plug gaps in the PyOpenGL table. The regal stuff is all-one-table for any COMPSIZE() value, while PyOpenGL has traditionally had many tables, one for each output-parameter... seems that could be simplified now to just use the one table, though there are definitely some corner-cases to be addressed (cases where e.g. another API call ...

Continue reading

So close on py2exe with PyOpenGL

I played with getting a py2exe executable created from PyOpenGL today, and it is very close to working.  The basics:

from distutils.core import setup
import py2exe
import glob, os
import OpenGL
data_files = [
        glob.glob( os.path.join( os.path.dirname( OpenGL.__file__ ), 'DLLS', '*.*' ))

if __name__ == "__main__":
            "py2exe": {
                "includes": [
                    "ctypes", "logging",
                ] + [
                    'OpenGL.arrays.%s'%x for x in [
                'skip_archive': True,
        data_files = data_files,

Which collects all of PyOpenGL's plugins that are applicable for use in Win32 (basically the ...

Continue reading

Daily archives

Previous month

March 2014

Next month

May 2014