orca r3963 - in branches/gnome-2-22: . src/orca



Author: wwalker
Date: Thu Jun  5 18:10:20 2008
New Revision: 3963
URL: http://svn.gnome.org/viewvc/orca?rev=3963&view=rev

Log:
Fix for bug #435585 - Java ControlPanel GIVING UP AFTER 5 TRIES.


Modified:
   branches/gnome-2-22/ChangeLog
   branches/gnome-2-22/src/orca/focus_tracking_presenter.py
   branches/gnome-2-22/src/orca/settings.py

Modified: branches/gnome-2-22/src/orca/focus_tracking_presenter.py
==============================================================================
--- branches/gnome-2-22/src/orca/focus_tracking_presenter.py	(original)
+++ branches/gnome-2-22/src/orca/focus_tracking_presenter.py	Thu Jun  5 18:10:20 2008
@@ -658,6 +658,8 @@
         - e: an at-spi event.
         """
 
+        asyncMode = settings.asyncMode
+
         if settings.debugEventQueue:
             if self._enqueueEventCount:
                 debug.println(debug.LEVEL_ALL,
@@ -730,6 +732,16 @@
                 debug.println(debug.LEVEL_ALL,
                               "---------> QUEUEING EVENT %s" % e.type)
 
+            # Some toolkits (e.g., Java - see bug #531869) need to
+            # have their events processed immediately.
+            #
+            try:
+                if event.host_application.toolkitName \
+                    in settings.synchronousToolkits:
+                    asyncMode = False
+            except:
+                pass
+
         if event:
             if settings.debugEventQueue:
                 debug.println(debug.LEVEL_ALL,
@@ -746,7 +758,7 @@
             if settings.debugEventQueue:
                 debug.println(debug.LEVEL_ALL,
                               "           ...put complete")
-            if settings.asyncMode and (not self._gidleId):
+            if asyncMode and (not self._gidleId):
                 if settings.gilSleepTime:
                     time.sleep(settings.gilSleepTime)
                 self._gidleId = gobject.idle_add(self._dequeueEvent)
@@ -759,7 +771,7 @@
                 debug.println(debug.LEVEL_ALL,
                               "           ...released")
 
-            if not settings.asyncMode:
+            if not asyncMode:
                 self._dequeueEvent()
 
         if settings.debugEventQueue:

Modified: branches/gnome-2-22/src/orca/settings.py
==============================================================================
--- branches/gnome-2-22/src/orca/settings.py	(original)
+++ branches/gnome-2-22/src/orca/settings.py	Thu Jun  5 18:10:20 2008
@@ -681,6 +681,14 @@
 #
 asyncMode               = True
 
+# A list of toolkits whose events we need to process synchronously.
+# The only one right now is the Java toolkit (see bug #531869), but
+# we put this here to allow more toolkits to be more easily added
+# and for Java to be removed if issues with asynchronous processing
+# of its events are ever resolved.
+#
+synchronousToolkits     = ["J2SE-access-bridge"]
+
 # If True, we output debug information for the event queue.  We
 # use this in addition to log level to prevent debug logic from
 # bogging down event handling.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]