Java exception using robot in firefox extension
Hi,
I got a problem with my first firefox extension - based on code of
screengrab extension I
tried to make an extension for making screenshots of flash games.
Let's say, user has a button which can start and pause making of
screenshots. Everything works fine, until java throws exception:
"java.lang.reflect.InvocationTargetException" - after that, no matter
what I do, I can't get my extension to work again. I have to restart
firefox to make screenshots again.
From what I discovered, java memory usage goes up while extension
beign used, until java uses around 256 MB or ram - and then extension
"flips" with exception mentioned above.
What am I doing wrong - is there some "magic" function to "reset" java
memory usage, or at least "restart" java process from within my
extension ?
Here's simplified example of my code (use firefox error console to see
the output - on my computer counter reaches 429 before java
exception):
//example.xul
<?xml version="1.0"?>
<overlay id="sample" xmlns="http://www.mozilla.org/keymaster/
gatekeeper/there.is.only.xul">
<script>
var mygs_log = Components.classes["@mozilla.org/consoleservice;
1"].getService(Components.interfaces.nsIConsoleService)
var mygs_logcounter = 0;
var mygs_robot = new java.awt.Robot();
var mygs_javarectangle = new java.awt.Rectangle(0, 0, 300, 500);
var mygs_do_capture = function() {
mygs_log.logStringMessage('function start; ' + mygs_logcounter);
mygs_logcounter += 1;
mygs_robot.waitForIdle();
try {
mygs_robot.createScreenCapture(mygs_javarectangle);
} catch(e) {
clearInterval(mygs_logid);
mygs_log.logStringMessage(e);
}
if (mygs_logcounter >= 1000) {
clearInterval(mygs_logid);
}
}
var mygs_logid = window.setInterval(mygs_do_capture, 300);
</script>
</overlay>