< prev index next >

src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeEventHandler.cpp

Print this page




 153  *       on the PropertyChangeEvent once it is no longer needed,
 154  *       otherwise the JavaVM/JNI will suffer memory leaks
 155  *
 156  */
 157 void
 158 AccessBridgeEventHandler::firePropertyChange(long vmID,
 159                                              JOBJECT64 event, JOBJECT64 source,
 160                                              wchar_t *property, wchar_t *oldName,
 161                                              wchar_t *newName) {
 162     DEBUG_CODE(char debugBuf[255]);
 163 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 164     DEBUG_CODE(sprintf(debugBuf, "\r\nCalling firePropertyChange(%p, %p):\r\n", event, source));
 165 #else // JOBJECT64 is jlong (64 bit)
 166     DEBUG_CODE(sprintf(debugBuf, "\r\nCalling firePropertyChange(%016I64X, %016I64X):\r\n", event, source));
 167 #endif
 168     DEBUG_CODE(AppendToCallInfo(debugBuf));
 169 
 170     if (propertyChangeFP != (AccessBridge_PropertyChangeFP) 0) {
 171         propertyChangeFP(vmID, event, source, property, oldName, newName);
 172     } else {
 173         DEBUG_CODE(AppendToCallInfo("  Error! propertyChangeFP == 0\r\n"));
 174     }
 175 }
 176 
 177 
 178 /**
 179  * FIRE_EVENT - macro for all fireXXX methods (which
 180  *   all are basically identical to one another...)
 181  *
 182  * Note: the event and source objects passed in are globalReferences;
 183  *       It is critical that releaseJavaObject() be called
 184  *       on them once they are no longer needed, otherwise
 185  *       the JavaVM/JNI will suffer memory leaks
 186  *
 187  */
 188 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 189 const char fireEventDebugString[] = "\r\nIn AccessBridgeEventHandler::%s(%p, %p); vmID = %X\r\n";
 190 #else // JOBJECT64 is jlong (64 bit)
 191 const char fireEventDebugString[] = "\r\nIn AccessBridgeEventHandler::%s(%016I64X, %016I64X); vmID = %X\r\n";
 192 #endif
 193 
 194 #define FIRE_EVENT(method, FPprototype, eventFP) \
 195     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source) { \
 196         DEBUG_CODE(char debugBuf[255]); \
 197         DEBUG_CODE(sprintf(debugBuf, fireEventDebugString, #method, event, source, vmID)); \
 198         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 199         if (eventFP != (FPprototype) 0) { \
 200             eventFP(vmID, event, source); \
 201         } else { \
 202             DEBUG_CODE(AppendToCallInfo("  Error! eventFP == 0\r\n")); \
 203         } \
 204     }
 205 
 206     void AccessBridgeEventHandler::fireJavaShutdown(long vmID) {
 207         DEBUG_CODE(char debugBuf[255]);
 208         DEBUG_CODE(sprintf(debugBuf, "\r\nCalling fireJavaShutdown; vmID = %X\r\n", vmID));
 209         DEBUG_CODE(AppendToCallInfo(debugBuf));
 210         if (javaShutdownFP != (AccessBridge_JavaShutdownFP) 0) {
 211             javaShutdownFP(vmID);
 212         } else {
 213             DEBUG_CODE(AppendToCallInfo("  Error! javaShutdownFP == 0\r\n"));
 214         }
 215     }
 216 
 217 FIRE_EVENT(fireFocusGained, AccessBridge_FocusGainedFP, focusGainedFP)
 218 FIRE_EVENT(fireFocusLost, AccessBridge_FocusLostFP, focusLostFP)
 219 FIRE_EVENT(fireCaretUpdate, AccessBridge_CaretUpdateFP, caretUpdateFP)
 220 FIRE_EVENT(fireMouseClicked, AccessBridge_MouseClickedFP, mouseClickedFP)
 221 FIRE_EVENT(fireMouseEntered, AccessBridge_MouseEnteredFP, mouseEnteredFP)
 222 FIRE_EVENT(fireMouseExited, AccessBridge_MouseExitedFP, mouseExitedFP)
 223 FIRE_EVENT(fireMousePressed, AccessBridge_MousePressedFP, mousePressedFP)
 224 FIRE_EVENT(fireMouseReleased, AccessBridge_MouseReleasedFP, mouseReleasedFP)
 225 FIRE_EVENT(fireMenuCanceled, AccessBridge_MenuCanceledFP, menuCanceledFP)
 226 FIRE_EVENT(fireMenuDeselected, AccessBridge_MenuDeselectedFP, menuDeselectedFP)
 227 FIRE_EVENT(fireMenuSelected, AccessBridge_MenuSelectedFP, menuSelectedFP)
 228 FIRE_EVENT(firePopupMenuCanceled, AccessBridge_PopupMenuCanceledFP, popupMenuCanceledFP)
 229 FIRE_EVENT(firePopupMenuWillBecomeInvisible, AccessBridge_PopupMenuWillBecomeInvisibleFP, popupMenuWillBecomeInvisibleFP)
 230 FIRE_EVENT(firePopupMenuWillBecomeVisible, AccessBridge_PopupMenuWillBecomeVisibleFP, popupMenuWillBecomeVisibleFP)
 231 
 232 
 233 /**
 234  * FIRE_PROPERTY_CHANGE - macro for all fireXXX methods (which
 235  *   all are basically identical to one another...
 236  *
 237  * Note: the event and source objects passed in are globalReferences;
 238  *       It is critical that releaseJavaObject() be called
 239  *       on them once they are no longer needed, otherwise
 240  *       the JavaVM/JNI will suffer memory leaks
 241  *
 242  */
 243 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 244 const char firePropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing a no-param property change (%p, %p):\r\n";
 245 #else // JOBJECT64 is jlong (64 bit)
 246 const char firePropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing a no-param property change (%016I64X, %016I64X):\r\n";
 247 #endif
 248 
 249 #define FIRE_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 250     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source) { \
 251         DEBUG_CODE(char debugBuf[255]); \
 252         DEBUG_CODE(sprintf(debugBuf, firePropertyChangeDebugString, #method, event, source)); \
 253         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 254         if (eventFP != (FPprototype) 0) { \
 255             eventFP(vmID, event, source); \
 256         } else { \
 257             DEBUG_CODE(AppendToCallInfo("  Error! eventFP == 0\r\n")); \
 258         } \
 259     }
 260 
 261 /**
 262  * FIRE_STRING_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 263  *   that have strings as the old/new values
 264 
 265  * Note: the event and source objects passed in are globalReferences;
 266  *       It is critical that releaseJavaObject() be called
 267  *       on them once they are no longer needed, otherwise
 268  *       the JavaVM/JNI will suffer memory leaks
 269  *
 270  */
 271 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 272 const char fireStringPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing a string property change (%p, %p, %ls, %ls):\r\n";
 273 #else // JOBJECT64 is jlong (64 bit)
 274 const char fireStringPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing a string property change (%016I64X, %016I64X, %ls, %ls):\r\n";
 275 #endif
 276 
 277 #define FIRE_STRING_PROPERTY_CHANGE(method, FPprototype, eventFP, oldValue, newValue) \
 278     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source, \
 279                                           wchar_t *oldValue, wchar_t *newValue) { \
 280         DEBUG_CODE(char debugBuf[255]); \
 281         DEBUG_CODE(sprintf(debugBuf, fireStringPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 282         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 283         if (eventFP != (FPprototype) 0) { \
 284             eventFP(vmID, event, source, oldValue, newValue); \
 285         } else { \
 286             DEBUG_CODE(AppendToCallInfo("  Error! eventFP == 0\r\n")); \
 287         } \
 288     }
 289 
 290 /**
 291  * FIRE_INT_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 292  *   that have ints as the old/new values
 293  *
 294  * Note: the event and source objects passed in are globalReferences;
 295  *       It is critical that releaseJavaObject() be called
 296  *       on them once they are no longer needed, otherwise
 297  *       the JavaVM/JNI will suffer memory leaks
 298  *
 299  */
 300 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 301 const char fireIntPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing an int property change (%p, %p, %d, %d):\r\n";
 302 #else // JOBJECT64 is jlong (64 bit)
 303 const char fireIntPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing an int property change (%016I64X, %016I64X, %d, %d):\r\n";
 304 #endif
 305 
 306 #define FIRE_INT_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 307     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source,  \
 308                                           int oldValue, int newValue) { \
 309         DEBUG_CODE(char debugBuf[255]); \
 310         DEBUG_CODE(sprintf(debugBuf, fireIntPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 311         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 312         if (eventFP != (FPprototype) 0) { \
 313             eventFP(vmID, event, source, oldValue, newValue); \
 314         } else { \
 315             DEBUG_CODE(AppendToCallInfo("  Error! eventFP == 0\r\n")); \
 316         } \
 317     }
 318 
 319 /**
 320  * FIRE_AC_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 321  *   that have jobjects (AccessibleContexts) as the old/new values
 322  *
 323  * Note: the event and source objects passed in are globalReferences;
 324  *       It is critical that releaseJavaObject() be called
 325  *       on them once they are no longer needed, otherwise
 326  *       the JavaVM/JNI will suffer memory leaks
 327  *
 328  */
 329 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 330 const char fireACPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing an AC property change (%p, %p, %p, %p):\r\n";
 331 #else // JOBJECT64 is jlong (64 bit)
 332 const char fireACPropertyChangeDebugString[] = "\r\nIn AccessBridgeEventHandler::%s, Firing an AC property change (%016I64X, %016I64X, %016I64X, %016I64X):\r\n";
 333 #endif
 334 
 335 #define FIRE_AC_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 336     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source,  \
 337                                           JOBJECT64 oldValue, JOBJECT64 newValue) { \
 338         DEBUG_CODE(char debugBuf[255]); \
 339         DEBUG_CODE(sprintf(debugBuf, fireACPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 340         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 341         if (eventFP != (FPprototype) 0) { \
 342             eventFP(vmID, event, source, oldValue, newValue); \
 343         } else { \
 344             DEBUG_CODE(AppendToCallInfo("  Error! eventFP == 0\r\n")); \
 345         } \
 346     }
 347 
 348 FIRE_STRING_PROPERTY_CHANGE(firePropertyNameChange,
 349                             AccessBridge_PropertyNameChangeFP,
 350                             propertyNameChangeFP, oldName, newName)
 351 FIRE_STRING_PROPERTY_CHANGE(firePropertyDescriptionChange,
 352                             AccessBridge_PropertyDescriptionChangeFP,
 353                             propertyDescriptionChangeFP,
 354                             oldDescription, newDescription)
 355 FIRE_STRING_PROPERTY_CHANGE(firePropertyStateChange,
 356                             AccessBridge_PropertyStateChangeFP,
 357                             propertyStateChangeFP, oldState, newState)
 358 FIRE_STRING_PROPERTY_CHANGE(firePropertyValueChange,
 359                             AccessBridge_PropertyValueChangeFP,
 360                             propertyValueChangeFP, oldValue, newValue)
 361 FIRE_PROPERTY_CHANGE(firePropertySelectionChange,
 362                      AccessBridge_PropertySelectionChangeFP,
 363                      propertySelectionChangeFP)
 364 FIRE_PROPERTY_CHANGE(firePropertyTextChange,


 153  *       on the PropertyChangeEvent once it is no longer needed,
 154  *       otherwise the JavaVM/JNI will suffer memory leaks
 155  *
 156  */
 157 void
 158 AccessBridgeEventHandler::firePropertyChange(long vmID,
 159                                              JOBJECT64 event, JOBJECT64 source,
 160                                              wchar_t *property, wchar_t *oldName,
 161                                              wchar_t *newName) {
 162     DEBUG_CODE(char debugBuf[255]);
 163 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 164     DEBUG_CODE(sprintf(debugBuf, "\r\nCalling firePropertyChange(%p, %p):\r\n", event, source));
 165 #else // JOBJECT64 is jlong (64 bit)
 166     DEBUG_CODE(sprintf(debugBuf, "\r\nCalling firePropertyChange(%016I64X, %016I64X):\r\n", event, source));
 167 #endif
 168     DEBUG_CODE(AppendToCallInfo(debugBuf));
 169 
 170     if (propertyChangeFP != (AccessBridge_PropertyChangeFP) 0) {
 171         propertyChangeFP(vmID, event, source, property, oldName, newName);
 172     } else {
 173         DEBUG_CODE(AppendToCallInfo("[ERROR]: propertyChangeFP == 0"));
 174     }
 175 }
 176 
 177 
 178 /**
 179  * FIRE_EVENT - macro for all fireXXX methods (which
 180  *   all are basically identical to one another...)
 181  *
 182  * Note: the event and source objects passed in are globalReferences;
 183  *       It is critical that releaseJavaObject() be called
 184  *       on them once they are no longer needed, otherwise
 185  *       the JavaVM/JNI will suffer memory leaks
 186  *
 187  */
 188 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 189 const char fireEventDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s(%p, %p); vmID = %X\r\n";
 190 #else // JOBJECT64 is jlong (64 bit)
 191 const char fireEventDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s(%016I64X, %016I64X); vmID = %X\r\n";
 192 #endif
 193 
 194 #define FIRE_EVENT(method, FPprototype, eventFP) \
 195     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source) { \
 196         DEBUG_CODE(char debugBuf[255]); \
 197         DEBUG_CODE(sprintf(debugBuf, fireEventDebugString, #method, event, source, vmID)); \
 198         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 199         if (eventFP != (FPprototype) 0) { \
 200             eventFP(vmID, event, source); \
 201         } else { \
 202             DEBUG_CODE(AppendToCallInfo("[ERROR]: eventFP == 0")); \
 203         } \
 204     }
 205 
 206     void AccessBridgeEventHandler::fireJavaShutdown(long vmID) {
 207         DEBUG_CODE(char debugBuf[255]);
 208         DEBUG_CODE(sprintf(debugBuf, "[INFO]: Calling fireJavaShutdown; vmID = %X\r\n", vmID));
 209         DEBUG_CODE(AppendToCallInfo(debugBuf));
 210         if (javaShutdownFP != (AccessBridge_JavaShutdownFP) 0) {
 211             javaShutdownFP(vmID);
 212         } else {
 213             DEBUG_CODE(AppendToCallInfo("[ERROR]:  javaShutdownFP == 0"));
 214         }
 215     }
 216 
 217 FIRE_EVENT(fireFocusGained, AccessBridge_FocusGainedFP, focusGainedFP)
 218 FIRE_EVENT(fireFocusLost, AccessBridge_FocusLostFP, focusLostFP)
 219 FIRE_EVENT(fireCaretUpdate, AccessBridge_CaretUpdateFP, caretUpdateFP)
 220 FIRE_EVENT(fireMouseClicked, AccessBridge_MouseClickedFP, mouseClickedFP)
 221 FIRE_EVENT(fireMouseEntered, AccessBridge_MouseEnteredFP, mouseEnteredFP)
 222 FIRE_EVENT(fireMouseExited, AccessBridge_MouseExitedFP, mouseExitedFP)
 223 FIRE_EVENT(fireMousePressed, AccessBridge_MousePressedFP, mousePressedFP)
 224 FIRE_EVENT(fireMouseReleased, AccessBridge_MouseReleasedFP, mouseReleasedFP)
 225 FIRE_EVENT(fireMenuCanceled, AccessBridge_MenuCanceledFP, menuCanceledFP)
 226 FIRE_EVENT(fireMenuDeselected, AccessBridge_MenuDeselectedFP, menuDeselectedFP)
 227 FIRE_EVENT(fireMenuSelected, AccessBridge_MenuSelectedFP, menuSelectedFP)
 228 FIRE_EVENT(firePopupMenuCanceled, AccessBridge_PopupMenuCanceledFP, popupMenuCanceledFP)
 229 FIRE_EVENT(firePopupMenuWillBecomeInvisible, AccessBridge_PopupMenuWillBecomeInvisibleFP, popupMenuWillBecomeInvisibleFP)
 230 FIRE_EVENT(firePopupMenuWillBecomeVisible, AccessBridge_PopupMenuWillBecomeVisibleFP, popupMenuWillBecomeVisibleFP)
 231 
 232 
 233 /**
 234  * FIRE_PROPERTY_CHANGE - macro for all fireXXX methods (which
 235  *   all are basically identical to one another...
 236  *
 237  * Note: the event and source objects passed in are globalReferences;
 238  *       It is critical that releaseJavaObject() be called
 239  *       on them once they are no longer needed, otherwise
 240  *       the JavaVM/JNI will suffer memory leaks
 241  *
 242  */
 243 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 244 const char firePropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing a no-param property change (%p, %p):\r\n";
 245 #else // JOBJECT64 is jlong (64 bit)
 246 const char firePropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing a no-param property change (%016I64X, %016I64X):\r\n";
 247 #endif
 248 
 249 #define FIRE_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 250     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source) { \
 251         DEBUG_CODE(char debugBuf[255]); \
 252         DEBUG_CODE(sprintf(debugBuf, firePropertyChangeDebugString, #method, event, source)); \
 253         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 254         if (eventFP != (FPprototype) 0) { \
 255             eventFP(vmID, event, source); \
 256         } else { \
 257             DEBUG_CODE(AppendToCallInfo("[ERROR]:  eventFP == 0")); \
 258         } \
 259     }
 260 
 261 /**
 262  * FIRE_STRING_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 263  *   that have strings as the old/new values
 264 
 265  * Note: the event and source objects passed in are globalReferences;
 266  *       It is critical that releaseJavaObject() be called
 267  *       on them once they are no longer needed, otherwise
 268  *       the JavaVM/JNI will suffer memory leaks
 269  *
 270  */
 271 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 272 const char fireStringPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing a string property change (%p, %p, %ls, %ls):\r\n";
 273 #else // JOBJECT64 is jlong (64 bit)
 274 const char fireStringPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing a string property change (%016I64X, %016I64X, %ls, %ls):\r\n";
 275 #endif
 276 
 277 #define FIRE_STRING_PROPERTY_CHANGE(method, FPprototype, eventFP, oldValue, newValue) \
 278     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source, \
 279                                           wchar_t *oldValue, wchar_t *newValue) { \
 280         DEBUG_CODE(char debugBuf[255]); \
 281         DEBUG_CODE(sprintf(debugBuf, fireStringPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 282         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 283         if (eventFP != (FPprototype) 0) { \
 284             eventFP(vmID, event, source, oldValue, newValue); \
 285         } else { \
 286             DEBUG_CODE(AppendToCallInfo("[ERROR]:  eventFP == 0\r\n")); \
 287         } \
 288     }
 289 
 290 /**
 291  * FIRE_INT_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 292  *   that have ints as the old/new values
 293  *
 294  * Note: the event and source objects passed in are globalReferences;
 295  *       It is critical that releaseJavaObject() be called
 296  *       on them once they are no longer needed, otherwise
 297  *       the JavaVM/JNI will suffer memory leaks
 298  *
 299  */
 300 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 301 const char fireIntPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing an int property change (%p, %p, %d, %d):\r\n";
 302 #else // JOBJECT64 is jlong (64 bit)
 303 const char fireIntPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing an int property change (%016I64X, %016I64X, %d, %d):\r\n";
 304 #endif
 305 
 306 #define FIRE_INT_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 307     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source,  \
 308                                           int oldValue, int newValue) { \
 309         DEBUG_CODE(char debugBuf[255]); \
 310         DEBUG_CODE(sprintf(debugBuf, fireIntPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 311         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 312         if (eventFP != (FPprototype) 0) { \
 313             eventFP(vmID, event, source, oldValue, newValue); \
 314         } else { \
 315             DEBUG_CODE(AppendToCallInfo("[ERROR]: eventFP == 0\r\n")); \
 316         } \
 317     }
 318 
 319 /**
 320  * FIRE_AC_PROPERTY_CHANGE - macro for all firePropertyXXXChange methods
 321  *   that have jobjects (AccessibleContexts) as the old/new values
 322  *
 323  * Note: the event and source objects passed in are globalReferences;
 324  *       It is critical that releaseJavaObject() be called
 325  *       on them once they are no longer needed, otherwise
 326  *       the JavaVM/JNI will suffer memory leaks
 327  *
 328  */
 329 #ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
 330 const char fireACPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing an AC property change (%p, %p, %p, %p):\r\n";
 331 #else // JOBJECT64 is jlong (64 bit)
 332 const char fireACPropertyChangeDebugString[] = "[INFO]: In AccessBridgeEventHandler::%s, Firing an AC property change (%016I64X, %016I64X, %016I64X, %016I64X):\r\n";
 333 #endif
 334 
 335 #define FIRE_AC_PROPERTY_CHANGE(method, FPprototype, eventFP) \
 336     void AccessBridgeEventHandler::method(long vmID, JOBJECT64 event, JOBJECT64 source,  \
 337                                           JOBJECT64 oldValue, JOBJECT64 newValue) { \
 338         DEBUG_CODE(char debugBuf[255]); \
 339         DEBUG_CODE(sprintf(debugBuf, fireACPropertyChangeDebugString, #method, event, source, oldValue, newValue)); \
 340         DEBUG_CODE(AppendToCallInfo(debugBuf)); \
 341         if (eventFP != (FPprototype) 0) { \
 342             eventFP(vmID, event, source, oldValue, newValue); \
 343         } else { \
 344             DEBUG_CODE(AppendToCallInfo("[ERROR]:  eventFP == 0\r\n")); \
 345         } \
 346     }
 347 
 348 FIRE_STRING_PROPERTY_CHANGE(firePropertyNameChange,
 349                             AccessBridge_PropertyNameChangeFP,
 350                             propertyNameChangeFP, oldName, newName)
 351 FIRE_STRING_PROPERTY_CHANGE(firePropertyDescriptionChange,
 352                             AccessBridge_PropertyDescriptionChangeFP,
 353                             propertyDescriptionChangeFP,
 354                             oldDescription, newDescription)
 355 FIRE_STRING_PROPERTY_CHANGE(firePropertyStateChange,
 356                             AccessBridge_PropertyStateChangeFP,
 357                             propertyStateChangeFP, oldState, newState)
 358 FIRE_STRING_PROPERTY_CHANGE(firePropertyValueChange,
 359                             AccessBridge_PropertyValueChangeFP,
 360                             propertyValueChangeFP, oldValue, newValue)
 361 FIRE_PROPERTY_CHANGE(firePropertySelectionChange,
 362                      AccessBridge_PropertySelectionChangeFP,
 363                      propertySelectionChangeFP)
 364 FIRE_PROPERTY_CHANGE(firePropertyTextChange,
< prev index next >