src/windows/native/sun/windows/awt_Window.cpp

Print this page

        

*** 146,155 **** --- 146,160 ---- struct SetFullScreenExclusiveModeStateStruct { jobject window; jboolean isFSEMState; }; + // struct for _Ungrab() method + struct UngrabStruct { + jobject window; + jboolean doPost; + }; /************************************************************************ * AwtWindow fields */
*** 318,344 **** } void AwtWindow::_Ungrab(void * param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); ! jobject self = (jobject)param; if (env->EnsureLocalCapacity(1) < 0) { env->DeleteGlobalRef(self); return; } AwtWindow *p = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); p = (AwtWindow *)pData; ! p->Ungrab(FALSE); ret: env->DeleteGlobalRef(self); } MsgRouting AwtWindow::WmNcMouseDown(WPARAM hitTest, int x, int y, int button) { if (m_grabbedWindow != NULL && !m_grabbedWindow->IsOneOfOwnersOf(this)) { m_grabbedWindow->Ungrab(); --- 323,353 ---- } void AwtWindow::_Ungrab(void * param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); ! UngrabStruct* us = (UngrabStruct*)param; ! jobject self = us->window; ! jboolean doPost = us->doPost; if (env->EnsureLocalCapacity(1) < 0) { env->DeleteGlobalRef(self); + delete us; return; } AwtWindow *p = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); p = (AwtWindow *)pData; ! p->Ungrab(doPost); ret: env->DeleteGlobalRef(self); + delete us; } MsgRouting AwtWindow::WmNcMouseDown(WPARAM hitTest, int x, int y, int button) { if (m_grabbedWindow != NULL && !m_grabbedWindow->IsOneOfOwnersOf(this)) { m_grabbedWindow->Ungrab();
*** 3505,3520 **** CATCH_BAD_ALLOC; } JNIEXPORT void JNICALL ! Java_sun_awt_windows_WWindowPeer_nativeUngrab(JNIEnv *env, jobject self) { TRY; ! AwtToolkit::GetInstance().SyncCall(AwtWindow::_Ungrab, env->NewGlobalRef(self)); ! // global ref is deleted in _Ungrab() CATCH_BAD_ALLOC; } /* --- 3514,3533 ---- CATCH_BAD_ALLOC; } JNIEXPORT void JNICALL ! Java_sun_awt_windows_WWindowPeer_nativeUngrab(JNIEnv *env, jobject self, jboolean doPost) { TRY; ! UngrabStruct *us = new UngrabStruct; ! us->window = env->NewGlobalRef(self); ! us->doPost = doPost; ! ! AwtToolkit::GetInstance().SyncCall(AwtWindow::_Ungrab, us); ! // global ref and us are deleted in _Ungrab() CATCH_BAD_ALLOC; } /*