OSDN Git Service

Release any unused java objects when finding the first available target for a relatio...
authorMichael Curran <mick@kulgan.net>
Thu, 9 Sep 2010 05:09:36 +0000 (15:09 +1000)
committerMichael Curran <mick@kulgan.net>
Thu, 9 Sep 2010 05:09:36 +0000 (15:09 +1000)
source/NVDAObjects/JAB/__init__.py

index da46b77..59830a2 100644 (file)
@@ -358,15 +358,16 @@ class JAB(Window):
                        return None\r
                return index\r
 \r
-       def _get__JABRelations(self):\r
-               rs = self.jabContext.getAccessibleRelationSet()\r
-               return rs.relations[:rs.relationCount]\r
-\r
        def _getJABRelationFirstTarget(self, key):\r
-               for relation in self._JABRelations:\r
-                       if relation.key == key:\r
-                               return JAB(jabContext=JABHandler.JABContext(self.jabContext.hwnd, self.jabContext.vmID, relation.targets[0]))\r
-               return None\r
+               rs = self.jabContext.getAccessibleRelationSet()\r
+               targetObj=None\r
+               for relation in rs.relations[:rs.relationCount]:\r
+                       for target in relation.targets[:relation.targetCount]:\r
+                               if not targetObj and relation.key == key:\r
+                                       targetObj=JAB(jabContext=JABHandler.JABContext(self.jabContext.hwnd, self.jabContext.vmID, target))\r
+                               else:\r
+                                       JABHandler.bridgeDll.releaseJavaObject(self.jabContext.vmID,target)\r
+               return targetObj\r
 \r
        def _get_flowsTo(self):\r
                return self._getJABRelationFirstTarget("flowsTo")\r