Hi Mike,
I prefer quality!
Alright, here you go: http://www.ionic.de/x2goclient-3.99.1.0-release.dmg
I have removed most static linking (only libssh linked statically, though I could change that too.)
Qt 4.7.4 is now shipped as a dynamic library framework.
Yes, 4.7.4, because I tried my best to build and use Qt 4.8.0, but ran into a very weird bug.
After connecting to the server and hovering over the session list, x2goclient would crash. However, the crash does not happen in x2goclient but actually in Qt... more specifically, in this part of code: (src/gui/image/qpixmap_mac.cpp)
QMacPixmapData *px =
static_cast<QMacPixmapData*>(pixmap.data.data());if (px->cg_mask) {
if (px->cg_mask_rect == sr) {
CGImageRetain(px->cg_mask); //reference for the caller
return px->cg_mask;
}
CGImageRelease(px->cg_mask);
px->cg_mask = 0;
}
Why? Because px->cg_mask is null in line 9. "But, line 4 already checks, if px->cg_mask is not null", you may say. And so did I. But it seems like there is some weird race condition due to multithreading. I couldn't really figure the root cause out... tried to debug, but the backtrace consists of 75 functions, mostly Qt and CoreFoundation/Cocoa ones... no joy to look into this. I have diffed the file in question, only to find no code changes in the affected function. Some people suggested looking for QPixmaps in the code, as they must only be used in the main thread. I checked if the thread-IDs of the corresponding functions match the main thread and everything looked fine, so it's not "this" problem either.
Did anyone else test x2goclient with Qt 4.8.0 yet on Linux/Windows?
Anyway, as 4.7.4 is working fine, I'll stick to that for now and check every now and then for patches or the like.
Ricardo, can you please check this version for me?
Best regards,
Mihai