< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp

Print this page




 252         break;
 253     case DLL_PROCESS_DETACH:
 254 #ifdef DEBUG
 255         DTrace_DisableMutex();
 256         DMem_DisableMutex();
 257 #endif DEBUG
 258         break;
 259     }
 260     return TRUE;
 261 }
 262 
 263 /************************************************************************
 264  * AwtToolkit fields
 265  */
 266 
 267 AwtToolkit AwtToolkit::theInstance;
 268 
 269 /* ids for WToolkit fields accessed from native code */
 270 jmethodID AwtToolkit::windowsSettingChangeMID;
 271 jmethodID AwtToolkit::displayChangeMID;



 272 /* ids for Toolkit methods */
 273 jmethodID AwtToolkit::getDefaultToolkitMID;
 274 jmethodID AwtToolkit::getFontMetricsMID;
 275 jmethodID AwtToolkit::insetsMID;
 276 
 277 /************************************************************************
 278  * AwtToolkit methods
 279  */
 280 
 281 AwtToolkit::AwtToolkit() {
 282     m_localPump = FALSE;
 283     m_mainThreadId = 0;
 284     m_toolkitHWnd = NULL;
 285     m_inputMethodHWnd = NULL;
 286     m_verbose = FALSE;
 287     m_isActive = TRUE;
 288     m_isDisposed = FALSE;
 289 
 290     m_vmSignalled = FALSE;
 291 


1058 
1059           // if WM_QUERYENDSESSION hasn't successfully raised SIGTERM
1060           // we ignore the ENDSESSION message
1061           if (!tk.m_vmSignalled) {
1062               return 0;
1063           }
1064           tk.MessageLoop(AwtToolkit::PrimaryIdleFunc,
1065                          AwtToolkit::CommonPeekMessageFunc);
1066 
1067           // Dispose here instead of in eventLoop so that we don't have
1068           // to return from the WM_ENDSESSION handler.
1069           tk.Dispose();
1070 
1071           // Never return. The VM will halt the process.
1072           hang_if_shutdown();
1073 
1074           // Should never get here.
1075           DASSERT(FALSE);
1076           break;
1077       }






































1078       case WM_SYNC_WAIT:
1079           SetEvent(AwtToolkit::GetInstance().m_waitEvent);
1080           break;
1081     }
1082 
1083     return DefWindowProc(hWnd, message, wParam, lParam);
1084 
1085     CATCH_BAD_ALLOC_RET(0);
1086 }
1087 
1088 LRESULT CALLBACK AwtToolkit::GetMessageFilter(int code,
1089                                               WPARAM wParam, LPARAM lParam)
1090 {
1091     TRY;
1092 
1093     if (code >= 0 && wParam == PM_REMOVE && lParam != 0) {
1094        if (AwtToolkit::GetInstance().PreProcessMsg(*(MSG*)lParam) !=
1095                mrPassAlong) {
1096            /* PreProcessMsg() wants us to eat it */
1097            ((MSG*)lParam)->message = WM_NULL;


2115     DASSERT(componentClassLocal != 0);
2116     CHECK_NULL(componentClassLocal);
2117 
2118     jawtSMgrID = env->GetFieldID(vImgClassLocal, "volSurfaceManager",
2119                                  "Lsun/awt/image/VolatileSurfaceManager;");
2120     DASSERT(jawtSMgrID != 0);
2121     CHECK_NULL(jawtSMgrID);
2122 
2123     jawtSDataID = env->GetFieldID(vSMgrClassLocal, "sdCurrent",
2124                                   "Lsun/java2d/SurfaceData;");
2125     DASSERT(jawtSDataID != 0);
2126     CHECK_NULL(jawtSDataID);
2127 
2128     jawtPDataID = env->GetFieldID(sDataClassLocal, "pData", "J");
2129     DASSERT(jawtPDataID != 0);
2130     CHECK_NULL(jawtPDataID);
2131     // Save these classes in global references for later use
2132     jawtVImgClass = (jclass)env->NewGlobalRef(vImgClassLocal);
2133     CHECK_NULL(jawtVImgClass);
2134     jawtComponentClass = (jclass)env->NewGlobalRef(componentClassLocal);














2135 
2136     CATCH_BAD_ALLOC;
2137 }
2138 
2139 
2140 /*
2141  * Class:     sun_awt_windows_Toolkit
2142  * Method:    disableCustomPalette
2143  * Signature: ()V
2144  */
2145 JNIEXPORT void JNICALL
2146 Java_sun_awt_windows_WToolkit_disableCustomPalette(JNIEnv *env, jclass cls) {
2147     AwtPalette::DisableCustomPalette();
2148 }
2149 
2150 /*
2151  * Class:     sun_awt_windows_WToolkit
2152  * Method:    embeddedInit
2153  * Signature: ()Z
2154  */




 252         break;
 253     case DLL_PROCESS_DETACH:
 254 #ifdef DEBUG
 255         DTrace_DisableMutex();
 256         DMem_DisableMutex();
 257 #endif DEBUG
 258         break;
 259     }
 260     return TRUE;
 261 }
 262 
 263 /************************************************************************
 264  * AwtToolkit fields
 265  */
 266 
 267 AwtToolkit AwtToolkit::theInstance;
 268 
 269 /* ids for WToolkit fields accessed from native code */
 270 jmethodID AwtToolkit::windowsSettingChangeMID;
 271 jmethodID AwtToolkit::displayChangeMID;
 272 
 273 jmethodID AwtToolkit::userSessionMID;
 274 jmethodID AwtToolkit::systemSleepMID;
 275 /* ids for Toolkit methods */
 276 jmethodID AwtToolkit::getDefaultToolkitMID;
 277 jmethodID AwtToolkit::getFontMetricsMID;
 278 jmethodID AwtToolkit::insetsMID;
 279 
 280 /************************************************************************
 281  * AwtToolkit methods
 282  */
 283 
 284 AwtToolkit::AwtToolkit() {
 285     m_localPump = FALSE;
 286     m_mainThreadId = 0;
 287     m_toolkitHWnd = NULL;
 288     m_inputMethodHWnd = NULL;
 289     m_verbose = FALSE;
 290     m_isActive = TRUE;
 291     m_isDisposed = FALSE;
 292 
 293     m_vmSignalled = FALSE;
 294 


1061 
1062           // if WM_QUERYENDSESSION hasn't successfully raised SIGTERM
1063           // we ignore the ENDSESSION message
1064           if (!tk.m_vmSignalled) {
1065               return 0;
1066           }
1067           tk.MessageLoop(AwtToolkit::PrimaryIdleFunc,
1068                          AwtToolkit::CommonPeekMessageFunc);
1069 
1070           // Dispose here instead of in eventLoop so that we don't have
1071           // to return from the WM_ENDSESSION handler.
1072           tk.Dispose();
1073 
1074           // Never return. The VM will halt the process.
1075           hang_if_shutdown();
1076 
1077           // Should never get here.
1078           DASSERT(FALSE);
1079           break;
1080       }
1081 #ifndef WM_WTSSESSION_CHANGE
1082 #define WM_WTSSESSION_CHANGE        0x02B1
1083 #define WTS_CONSOLE_CONNECT 0x1
1084 #define WTS_CONSOLE_DISCONNECT 0x2
1085 #define WTS_REMOTE_CONNECT 0x3
1086 #define WTS_REMOTE_DISCONNECT 0x4
1087 #define WTS_SESSION_LOGON 0x5
1088 #define WTS_SESSION_LOGOFF 0x6
1089 #define WTS_SESSION_LOCK 0x7
1090 #define WTS_SESSION_UNLOCK 0x8
1091 #define WTS_SESSION_REMOTE_CONTROL 0x9
1092 #endif // WM_WTSSESSION_CHANGE
1093       case WM_WTSSESSION_CHANGE: {
1094           jclass clzz = env->FindClass("sun/awt/windows/WDesktopPeer");
1095           DASSERT(clzz != NULL);
1096           if (!clzz) throw std::bad_alloc();
1097 
1098           if (wParam == WTS_SESSION_LOCK || wParam == WTS_SESSION_UNLOCK) {
1099               env->CallStaticVoidMethod(clzz, AwtToolkit::userSessionMID,
1100                                             wParam == WTS_SESSION_UNLOCK
1101                                                 ? JNI_TRUE 
1102                                                 : JNI_FALSE);
1103           }
1104           break;
1105       }
1106       case WM_POWERBROADCAST: {
1107           jclass clzz = env->FindClass("sun/awt/windows/WDesktopPeer");
1108           DASSERT(clzz != NULL);
1109           if (!clzz) throw std::bad_alloc();
1110           
1111           if (wParam == PBT_APMSUSPEND || wParam == PBT_APMRESUMEAUTOMATIC) {
1112               env->CallStaticVoidMethod(clzz, AwtToolkit::systemSleepMID,
1113                                             wParam == PBT_APMRESUMEAUTOMATIC
1114                                                 ? JNI_TRUE 
1115                                                 : JNI_FALSE);
1116           } 
1117           break;
1118       }
1119       case WM_SYNC_WAIT:
1120           SetEvent(AwtToolkit::GetInstance().m_waitEvent);
1121           break;
1122     }
1123 
1124     return DefWindowProc(hWnd, message, wParam, lParam);
1125 
1126     CATCH_BAD_ALLOC_RET(0);
1127 }
1128 
1129 LRESULT CALLBACK AwtToolkit::GetMessageFilter(int code,
1130                                               WPARAM wParam, LPARAM lParam)
1131 {
1132     TRY;
1133 
1134     if (code >= 0 && wParam == PM_REMOVE && lParam != 0) {
1135        if (AwtToolkit::GetInstance().PreProcessMsg(*(MSG*)lParam) !=
1136                mrPassAlong) {
1137            /* PreProcessMsg() wants us to eat it */
1138            ((MSG*)lParam)->message = WM_NULL;


2156     DASSERT(componentClassLocal != 0);
2157     CHECK_NULL(componentClassLocal);
2158 
2159     jawtSMgrID = env->GetFieldID(vImgClassLocal, "volSurfaceManager",
2160                                  "Lsun/awt/image/VolatileSurfaceManager;");
2161     DASSERT(jawtSMgrID != 0);
2162     CHECK_NULL(jawtSMgrID);
2163 
2164     jawtSDataID = env->GetFieldID(vSMgrClassLocal, "sdCurrent",
2165                                   "Lsun/java2d/SurfaceData;");
2166     DASSERT(jawtSDataID != 0);
2167     CHECK_NULL(jawtSDataID);
2168 
2169     jawtPDataID = env->GetFieldID(sDataClassLocal, "pData", "J");
2170     DASSERT(jawtPDataID != 0);
2171     CHECK_NULL(jawtPDataID);
2172     // Save these classes in global references for later use
2173     jawtVImgClass = (jclass)env->NewGlobalRef(vImgClassLocal);
2174     CHECK_NULL(jawtVImgClass);
2175     jawtComponentClass = (jclass)env->NewGlobalRef(componentClassLocal);
2176 
2177     jclass dPeerClassLocal = env->FindClass("sun/awt/windows/WDesktopPeer");
2178     DASSERT(dPeerClassLocal != 0);
2179     CHECK_NULL(dPeerClassLocal);
2180 
2181     AwtToolkit::userSessionMID =
2182     env->GetStaticMethodID(dPeerClassLocal, "userSessionCallback", "(Z)V");
2183     DASSERT(AwtToolkit::userSessionMID != 0);
2184     CHECK_NULL(AwtToolkit::userSessionMID);
2185     
2186     AwtToolkit::systemSleepMID =
2187     env->GetStaticMethodID(dPeerClassLocal, "systemSleepCallback", "(Z)V");
2188     DASSERT(AwtToolkit::systemSleepMID != 0);
2189     CHECK_NULL(AwtToolkit::systemSleepMID);
2190 
2191     CATCH_BAD_ALLOC;
2192 }
2193 
2194 
2195 /*
2196  * Class:     sun_awt_windows_Toolkit
2197  * Method:    disableCustomPalette
2198  * Signature: ()V
2199  */
2200 JNIEXPORT void JNICALL
2201 Java_sun_awt_windows_WToolkit_disableCustomPalette(JNIEnv *env, jclass cls) {
2202     AwtPalette::DisableCustomPalette();
2203 }
2204 
2205 /*
2206  * Class:     sun_awt_windows_WToolkit
2207  * Method:    embeddedInit
2208  * Signature: ()Z
2209  */


< prev index next >