QtWebkit multithreading
-
I am working on a project to render text as images using QT-Jambi.
The webkit renders the HTML and generates the image.
While running the code with a single thread there are no issue
but when I run the program using multiple threads(5-6) with each thread making multiple calls the getImage() the code crashesfor each thread I am passing a new QWebPage and using QWebPgae.moveToThread().
@ public void getImage(String str, int width, String fname, boolean istransparent) { QSize qSize = new QSize(width,height); page.setViewportSize(qSize); str = applyStyle(str); page.mainFrame().setHtml(str); String imageName = fname + "_" + width + "x" + page.mainFrame().contentsSize().height() + ".png"; System.out.println("Creating Full Image : " + imageName); page.setViewportSize(page.mainFrame().contentsSize()); QImage qImage = new QImage(page.mainFrame().contentsSize(), QImage.Format.Format_ARGB32); QPainter painter = new QPainter(qImage); page.mainFrame().render(painter); if (istransparent) makeTransparent(qImage); qImage.save(imageName); painter.end(); qImage.dispose(); } @
@
An unexpected error has been detected by Java Runtime Environment:
SIGSEGV (0xb) at pc=0x03534417, pid=6123, tid=1902168976
Java VM: OpenJDK Server VM (1.6.0-b09 mixed mode linux-x86)
Problematic frame:
C [libQtWebKit.so.4+0x567417]
If you would like to submit a bug report, please visit:
http://icedtea.classpath.org/bugzilla
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
@
@"COMPLETE CORE DUMP AT":http://freetexthost.com/1dtmb03qup
@ -
-
[quote author="ananya" date="1314020743"]I am passing a new instance of QWebPage to each thread
[/quote]I just can emphasize what peppe wrote:
[quote author="peppe" date="1314019276"]QtWebkit classes are GUI classes and as such they are meant to be used from the main thread only.[/quote]
So, you must not move the web page to another thread.
-
[quote author="Volker" date="1314056869"]All you can do is running multiple threads that collect the data (HTML pages) and send that to the QWebPage instances in the main thread.[/quote]
that wont really serve my purpose of generating images in parallel
[quote author="peppe" date="1314023870"]It's not possible with Qt. Can't you just run multiple processes?[/quote]
will try to run it as a process..and get back
-
[quote author="ananya" date="1314062413"]
[quote author="Volker" date="1314056869"]All you can do is running multiple threads that collect the data (HTML pages) and send that to the QWebPage instances in the main thread.[/quote]that wont really serve my purpose of generating images in parallel
[quote author="peppe" date="1314023870"]It's not possible with Qt. Can't you just run multiple processes?[/quote]
will try to run it as a process..and get back
[/quote]Suppose i use Callable instead of Runnable threads
Is it possible to initialize a new QApplication within each callable's call...when i'm trying this only the first callable runs..the others crash