I want to write a multipaint application – a program that enables users from different computers to draw simultaneously on one image. What toolkit should I use?
I’ve already discovered that Jambi is not appropriate in this case, because:
Any number of threads can paint at any given time, however only one thread at a time can paint on a given paint device. In other words, two threads can paint at the same time if each paints onto separate QImages, but the two threads cannot paint onto the same QImage at the same time.
( http://doc.trolltech.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-threads.html#creating-a-thread )
The toolkit which you are most experienced in.
You can implement this in any toolkit, as long as you correctly design the application; for instance:
The client will only have to listen for events and add them to it’s local frame, draw the shared frame (by each time painting, redrawing all events on an empty canvas), send the events over the network to other clients and listen for events and keyframes from other clients.
The drawing is single-threaded: it will collect all stacks (local, and per participant), orders it on time of occurrence and paint it in that order. This is supported by all mentioned frameworks.
Quite a #complex #dynamic #system, though.