Hello,
i've been looking through the archives but didnt
find anything effectively related and i really hope this wasnt just because of
my potentially bad enquiry skills.
So, why i'm querying you is because im working on
an application whose core is a multiserver-vnc connection module. This means
i've built the application on the libvncserver package for the vnc functionality
and gtkmm for gui purposes. But with the later i've run into some severe
performance issues when it comes to 10 or more connected servers. The
performance issue seems to be with the drawing of the frame buffer data on the
clients. I've been trying to get it done with Images and the drawing area, but
both seem to be either not used correctly or just not appropriate. I convert the
frame buffer the vnc library supplies into a pixbuffer and then rescale the
pixbuffer to fit the desired display size. The drawing area seems to have the
advantage that i can send the update rectangles (converted to appropriately
resized pixbuffers) directly to the inital pixbuffer and then just call the
queue are redraw method on the drawing area. But by doing so i run into a lot of
segfaults and strange error messages that dont make sense to me. The point where
it fails seems to be deep inside the gtkmm routines, though its most likely
started in my own code.
Again, im sorry for this big introduction, the
proper question i wanted to ask you is what approach you would suggest, since
the documentation didnt help me much.
Were talking about 10 updated per second from the
vnclibrary which have to be handled. What class would be the best to use for
displaying purposes?
If anyone of you has the time and feels like taking
a look,
is the url to the associated trac/svn. All related
code is found in the ConnectionFrame Class (src/gui/connectionFrame.cpp\h) and
though im german all code comments are in english. I didnt check in the latest
changes, so while im writing this theres just a timed update of the whole
picture instead of a consecutive update update-rectangle by update-rectangle
(which are triggered by the vnclib but are just ignored in the current, checked
in version).
You need the libvncserver0 (and the corresponding
-dev) package (its in most debianbased repositories) to compile it.
Thanks in advance for any helpful or at least
empathetic answers,
Simon
|