1.7.1 release

So basically, if I understand this correctly: it should pass None instead of _xwindow, like:

if (glxgsg->_context == NULL) {
  glXMakeCurrent(_display, None, NULL);
} else {
  glXMakeCurrent(_display, _xwindow, glxgsg->_context);

Can you verify if that works? I don’t have a Panda3D installation with X11 handy.

Will the buildbot return?

As soon as I find time to fix it.

OK, new debs are up. They have the nvidia-cg-toolkit dependency fixed, and the p3d tools included.
They also accidentally include a fix for shadow samplers in shaders. This was a bug introduced by CMU students; I had checked in a fix before, but I forgot to pick up that fix for 1.7.1. So it’ll be properly in 1.7.2.

I posted the same question on MESA forum. To me it seems like a bug in the MESA code. I will let you know when I hear back from them.

Also, I will try your suggestion and, again, will let you know.


Was it this bug (advanced one) ?
:display:gsg:glgsg(error): GL texture creation failed for : invalid operation
:display:gsg:glgsg(error): Could not load

And this one is still crashing hard (tested on windows) :

from pandac.PandaModules import *
#~ loadPrcFileData('','notify-level-display spam')
from direct.showbase.DirectObject import DirectObject
import direct.directbase.DirectStart

class World( DirectObject ):

  def __init__( self ):
#     base.disableMouse()
    base.cam.setPos( 0, -20, 2 )
#     self.accept( 'mouse1', self.destroyAndCreate )

  def create( self ):
    self.rootNode = render.attachNewNode( 'rootNode' )
    CM = CardMaker('')
    card = self.rootNode.attachNewNode( CM.generate())

    self.light = self.rootNode.attachNewNode( Spotlight( 'Spot' ) )
    self.lightNode = self.light.node()
    self.lightNode.setShadowCaster( True, 512, 512 )
    self.light.setPos( -20, -20, 20 )
    self.light.lookAt( 0,0,0 )
    self.rootNode.setLight( self.light )

    loader.loadModel( 'teapot' ).reparentTo( self.rootNode )

    self.buffer = base.win.makeTextureBuffer( 'Buffer', 512, 512 , Texture())
    self.camNP = base.makeCamera( self.buffer )
    self.camNP.reparentTo( self.rootNode )

  def destroy( self ):
    #~ self.buffer.setActive(0)
    #~ print self.buffer.getDisplayRegion(0).getCamera()
    base.graphicsEngine.removeWindow( self.buffer )
    self.camNP = self.buffer = None

  def postDestroy(self,t):
    self.lightNode.setShadowCaster( False )
    self.rootNode.clearLight( self.light )
    self.light = None
    print base.graphicsEngine.getNumWindows()

  def destroyAndCreate( self ):

w = World()

import os


Press SPACE, then ENTER.

And thanks for the hard work ! :smiley:

Nah, it was a compile error for shaders that use sampler2dShadow parameters.

Could you file a bug report on launchpad for that one?

Following up…

MESA developers suggested a patch and it got rid of the SEGFAULT. Unfortunately, even with the patch the 1.7.1 Roaming-Ralph gives a black window with lots of X11 errors in the console.

My gut feeling is something broke in 1.7.1.

I am reverting back to 1.7.0. I will try to dig in more if I find time.


For the record, could you give me a link to the relevant forum topic?

If you mean the MESA forum it is:


my game game won’t run anymore on v.1.7.1, it seems the problem is the dot operation, so, I made a test file trying to isolate the problem.

this is the test script I used:

from pandac.PandaModules import * 
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
class test(DirectObject):

	def __init__(self):
		cp1 = VBase3(1,1,1)
		cp2 = VBase3(1,1,1)
		print cp1.dot(cp2)


running it by typing python main.py it prints 3.0 on console and opens the panda3d window, that’s ok.
I used packp3d to pack the application and things go wrong when running the packaged application. The application exits with errors. The key error messages are:
print cp1.dot(cp2)
TypeError: ‘libpanda.VBase3’ object is not callable

have I found a bug?

Best regards

someone on irc experinced the same problem with an arm build. it works ok for me tho. 64bit lucid.

at the end I solved the dot operation trouble by writing my own dot function.
here the code in case somebody needs it:

def dot(cp1, cp2):
	x = cp1.getX()*cp2.getX()
	y = cp1.getY()*cp2.getY()
	z = cp1.getZ()*cp2.getZ()
	return x+y+z

Best regards

OK, I know what’s going on with the vector mess. It was a treacherous NDEBUG ifdef in the getattr method.

I’ll update the runtime.panda3d.org packages tomorrow. As it only occurs during the runtime, it’s not worth making a 1.7.2 right away for, but it’s important enough to have it fixed really soon.

I haven’t debugged the pdeploy issue with makensis yet, but it’s high on my priority list too, and I will get that fixed really soon, or at least implement the hacky workaround that I know will work.

drwr: do you have any thoughts on the glXMakeCurrent issue? Looking at the spec, it seems to me that we’re misusing it anyway when we’re releasing the context. I could be entirely wrong, though.

Sorry for the inconveniences.

I think your proposed fix, to pass None as the Window parameter, is the right thing to do. Is there a different problem that you see in addition to this?


I’ve just updated the packages at runtime.panda3d.org, the vector issue should be fixed now.

It also has the updated pdeploy.p3d, with the fixes for nsis. It turns out that subprocess.call was being used incorrectly.

I can’t get packp3d works anymore, could this be related to your last update?

I got this error:

StandardError: Couldn't download import file. 

here the file containing the full error message:

I’ve tried deleting .panda3d directory from my home so to forcing reloading of all packaged but don’t changes anything.

many thanks

p.s. link fixed

Your link is dead, but I think that your problem is the same as the one I’ve been hearing about from various people.

I found out I made a mistake in the way I built the 1.0.3 runtime, so I rebuilt it only a couple of hours ago and updated the download page with the updated 1.0.3 builds.

But I’m not sure if that actually fixed the problem.

Actually, I don’t think that that is the problem. I think that _context is not supposed to be NULL at that point, it is supposed to already have been initialised by glxgsg::choose_pixel_format. So something in choose_pixel_format is going wrong, or it is not being called at all for some weird reason.

Unfortunately, everything works fine on my computer, so I cannot debug it here.

OK, the contents.xml on runtime.panda3d.org had faulty hashes. It’s fixed now, so packp3d should work again.