Looks like the DRI2 buffers aren't getting freed. At resize time we get several calls:
indirect create drawable
DRI2CreateDrawable: new drawable, size 328x81
DRI2GetBuffers, buffers = (nil), size 328x81, count 0
indirect drawable destroy 308x86
indirect drawable destroy 300x300
indirect create drawable
DRI2CreateDrawable: new drawable, size 622x498
DRI2GetBuffers, buffers = (nil), size 622x498, count 0
indirect create drawable
DRI2CreateDrawable: new drawable, size 650x81
indirect drawable destroy 328x81
DRI2GetBuffers, buffers = (nil), size 650x81, count 0
But the __glXDRIdrawableDestroy doesn't end up calling the DRI2 destroy function because pDraw is NULL (seems like it shouldn't be). I'm tracing it more now to see if I can find the root cause.
Looks like the DRI2 buffers aren't getting freed. At resize time we get several calls:
indirect create drawable
DRI2CreateDrawable: new drawable, size 328x81
DRI2GetBuffers, buffers = (nil), size 328x81, count 0
indirect drawable destroy 308x86
indirect drawable destroy 300x300
indirect create drawable
DRI2CreateDrawable: new drawable, size 622x498
DRI2GetBuffers, buffers = (nil), size 622x498, count 0
indirect create drawable
DRI2CreateDrawable: new drawable, size 650x81
indirect drawable destroy 328x81
DRI2GetBuffers, buffers = (nil), size 650x81, count 0
But the __glXDRIdrawabl eDestroy doesn't end up calling the DRI2 destroy function because pDraw is NULL (seems like it shouldn't be). I'm tracing it more now to see if I can find the root cause.