mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
JBR-7047 Deadlock on git fetch on Wayland
This commit is contained in:
committed by
Maxim Kartashёv
parent
4bd4fcabf8
commit
3399c59635
@@ -841,6 +841,7 @@ CopyDrawBufferToShowBuffer(WLSurfaceBufferManager * manager)
|
||||
MUTEX_LOCK(manager->drawLock);
|
||||
|
||||
if (manager->bufferForShow.wlSurfaceBuffer == NULL || manager->bufferForDraw.data == NULL) {
|
||||
MUTEX_UNLOCK(manager->drawLock);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1054,7 +1055,7 @@ WLDrawBuffer *
|
||||
WLSBM_BufferAcquireForDrawing(WLSurfaceBufferManager * manager)
|
||||
{
|
||||
WLBufferTrace(manager, "WLSBM_BufferAcquireForDrawing(%d)", manager->bufferForDraw.frameID);
|
||||
MUTEX_LOCK(manager->drawLock);
|
||||
MUTEX_LOCK(manager->drawLock); // unlocked in WLSBM_BufferReturn()
|
||||
if (manager->bufferForDraw.resizePending) {
|
||||
WLBufferTrace(manager, "WLSBM_BufferAcquireForDrawing - creating a new draw buffer because the size has changed");
|
||||
DrawBufferResize(manager);
|
||||
@@ -1066,7 +1067,7 @@ void
|
||||
WLSBM_BufferReturn(WLSurfaceBufferManager * manager, WLDrawBuffer * buffer)
|
||||
{
|
||||
if (&manager->bufferForDraw == buffer) {
|
||||
MUTEX_UNLOCK(buffer->manager->drawLock);
|
||||
MUTEX_UNLOCK(buffer->manager->drawLock); // locked in WLSBM_BufferAcquireForDrawing()
|
||||
WLBufferTrace(manager, "WLSBM_BufferReturn(%d)", manager->bufferForDraw.frameID);
|
||||
} else {
|
||||
WL_FATAL_ERROR("WLSBM_BufferReturn() called with an unidentified buffer");
|
||||
|
||||
@@ -177,6 +177,7 @@ Java_sun_java2d_wl_WLSMSurfaceData_pixelsAt(JNIEnv *env, jobject wsd, jint x, ji
|
||||
}
|
||||
|
||||
if (rasInfo.bounds.x2 - rasInfo.bounds.x1 < width || rasInfo.bounds.y2 - rasInfo.bounds.y1 < height) {
|
||||
SurfaceData_InvokeUnlock(env, ops, &rasInfo);
|
||||
JNU_ThrowByName(env, "java/lang/ArrayIndexOutOfBoundsException", "Surface too small");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user