JBR-7047 Deadlock on git fetch on Wayland

This commit is contained in:
Maxim Kartashev
2024-05-03 11:06:37 +04:00
committed by Maxim Kartashёv
parent 4bd4fcabf8
commit 3399c59635
2 changed files with 4 additions and 2 deletions

View File

@@ -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");

View File

@@ -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;
}