Building a vnc-client with gtkmm



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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]