From 73f87f722b1b348caeab975b51d7ed7adbbb69e3 Mon Sep 17 00:00:00 2001 From: Vitaly Provodin Date: Mon, 17 Jun 2024 06:59:52 +0400 Subject: [PATCH] JBR-6696: fix drawableId usage + revert PrinterJob changes (non-appkit thread) (cherry picked from commit 5229c513e39779aa272398a5cb9fbc47981ec6f4) --- .../macosx/native/libawt_lwawt/awt/CPrinterJob.m | 10 ++-------- .../macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m | 8 ++++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m index c8adf4c5a459..9db38ee21ffd 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m @@ -678,14 +678,8 @@ JNI_COCOA_ENTER(env); jobject pageFormatArea = (*env)->CallObjectMethod(env, jthis, jm_getPageFormatArea, page); // AWT_THREADING Safe (!appKit) CHECK_EXCEPTION(); - NSRect rect = JavaToNSRect(env, pageFormatArea); - - __block PrinterView *printerView = nil; - - [ThreadUtilities performOnMainThreadWaiting:YES block:^() { - printerView = [[PrinterView alloc] initWithFrame:rect withEnv:env withPrinterJob:jthis]; - [printerView setFirstPage:firstPage lastPage:lastPage]; - }]; + PrinterView* printerView = [[PrinterView alloc] initWithFrame:JavaToNSRect(env, pageFormatArea) withEnv:env withPrinterJob:jthis]; + [printerView setFirstPage:firstPage lastPage:lastPage]; GET_NSPRINTINFO_METHOD_RETURN(NO) NSPrintInfo* printInfo = (NSPrintInfo*)jlong_to_ptr((*env)->CallLongMethod(env, jthis, sjm_getNSPrintInfo)); // AWT_THREADING Safe (known object) diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m index 6d38fb079400..ab2d5c9dadc2 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m @@ -254,9 +254,13 @@ BOOL MTLLayer_isExtraRedrawEnabled() { [blitEncoder endEncoding]; BOOL usePresentHandler = NO; + NSUInteger drawableId = -1; if (@available(macOS 10.15.4, *)) { usePresentHandler = YES; + if (TRACE_DISPLAY) { + drawableId = mtlDrawable.drawableID; + } [self retain]; [mtlDrawable addPresentedHandler:^(id drawable) { // note: called anyway even if drawable.present() not called! @@ -301,7 +305,7 @@ BOOL MTLLayer_isExtraRedrawEnabled() { if (TRACE_DISPLAY) { J2dRlsTraceLn(J2D_TRACE_INFO, "[%.6lf] MTLLayer.blitTexture: layer[%p] present drawable(%d)", - CACurrentMediaTime(), self, mtlDrawable.drawableID); + CACurrentMediaTime(), self, drawableId); } if (isDisplaySyncEnabled()) { [commandBuf presentDrawable:mtlDrawable]; @@ -334,7 +338,7 @@ BOOL MTLLayer_isExtraRedrawEnabled() { if (TRACE_DISPLAY) { J2dRlsTraceLn(J2D_TRACE_INFO, "[%.6lf] MTLLayer.blitTexture: layer[%p] commit with drawable(%d)", - CACurrentMediaTime(), self, mtlDrawable.drawableID); + CACurrentMediaTime(), self, drawableId); } } @finally { // try-finally block to ensure releasing the CPU fence: