diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLRenderQueue.m b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLRenderQueue.m index 9f8592baa57..0b01653f3c9 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLRenderQueue.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLRenderQueue.m @@ -584,11 +584,17 @@ void MTLRenderQueue_CheckPreviousOp(jint op) { jlong pSrc = NEXT_LONG(b); jlong pDst = NEXT_LONG(b); - dstOps = (BMTLSDOps *)jlong_to_ptr(pDst); if (mtlc != NULL) { [mtlc.encoderManager endEncoder]; + MTLCommandBufferWrapper * cbwrapper = [mtlc pullCommandBufferWrapper]; + id commandbuf = [cbwrapper getCommandBuffer]; + [commandbuf addCompletedHandler:^(id commandbuf) { + [cbwrapper release]; + }]; + [commandbuf commit]; } mtlc = [MTLContext setSurfacesEnv:env src:pSrc dst:pDst]; + dstOps = (BMTLSDOps *)jlong_to_ptr(pDst); break; } case sun_java2d_pipe_BufferedOpCodes_SET_SCRATCH_SURFACE: