Added decDisplay to Pbuffer.cpp in linux to fix a potential X connection leak
This commit is contained in:
parent
8040e723c6
commit
b50b5ca09b
|
@ -71,7 +71,6 @@ static void destroyPbuffer(PbufferInfo *buffer_info) {
|
||||||
glXDestroyPbuffer(getDisplay(), buffer);
|
glXDestroyPbuffer(getDisplay(), buffer);
|
||||||
if (!buffer_info->use_display_context)
|
if (!buffer_info->use_display_context)
|
||||||
glXDestroyContext(getDisplay(), context);
|
glXDestroyContext(getDisplay(), context);
|
||||||
// free(buffer_info);
|
|
||||||
decDisplay();
|
decDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,7 +220,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nCreate(JNIEnv *env, jclass
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
||||||
// PbufferInfo *buffer_info = (PbufferInfo *)malloc(sizeof(PbufferInfo));
|
|
||||||
buffer_info->use_display_context = use_display_context;
|
buffer_info->use_display_context = use_display_context;
|
||||||
bool result;
|
bool result;
|
||||||
if (use_display_context) {
|
if (use_display_context) {
|
||||||
|
@ -229,9 +227,8 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nCreate(JNIEnv *env, jclass
|
||||||
} else {
|
} else {
|
||||||
result = createPbufferUsingUniqueContext(env, buffer_info, pixel_format, width, height, buffer_attribs);
|
result = createPbufferUsingUniqueContext(env, buffer_info, pixel_format, width, height, buffer_attribs);
|
||||||
}
|
}
|
||||||
if (!result)
|
if (!result || !checkXError(env)) {
|
||||||
return;
|
decDisplay();
|
||||||
if (!checkXError(env)) {
|
|
||||||
destroyPbuffer(buffer_info);
|
destroyPbuffer(buffer_info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -241,7 +238,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nMakeCurrent
|
||||||
(JNIEnv *env, jclass clazz, jobject handle_buffer)
|
(JNIEnv *env, jclass clazz, jobject handle_buffer)
|
||||||
{
|
{
|
||||||
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
||||||
//PbufferInfo *buffer_info = (PbufferInfo *)handle;
|
|
||||||
GLXPbuffer buffer = buffer_info->buffer;
|
GLXPbuffer buffer = buffer_info->buffer;
|
||||||
GLXContext context = buffer_info->context;
|
GLXContext context = buffer_info->context;
|
||||||
if (glXMakeContextCurrent(getDisplay(), buffer, buffer, context) == False) {
|
if (glXMakeContextCurrent(getDisplay(), buffer, buffer, context) == False) {
|
||||||
|
@ -249,16 +245,10 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nMakeCurrent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: org_lwjgl_opengl_Pbuffer
|
|
||||||
* Method: nDestroyGL
|
|
||||||
* Signature: (I)V
|
|
||||||
*/
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nDestroy
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nDestroy
|
||||||
(JNIEnv *env, jclass clazz, jobject handle_buffer)
|
(JNIEnv *env, jclass clazz, jobject handle_buffer)
|
||||||
{
|
{
|
||||||
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
PbufferInfo *buffer_info = (PbufferInfo *)env->GetDirectBufferAddress(handle_buffer);
|
||||||
//PbufferInfo *buffer_info = (PbufferInfo *)handle;
|
|
||||||
destroyPbuffer(buffer_info);
|
destroyPbuffer(buffer_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue