I've had an open issue with gnome-mplayer not working on the BSDs for awhile now. It always seemed to be a locking error with the code and the problem didn't happen on any of my machines. After trying to have people help me debug it, it kept coming back to the same issue, the second call to g_mutex_lock didn't block, it would just go on thru. So I decided to bite the bullet and install FreeBSD 7 on a VM. I was able to duplicate the issue quite easily. So the next step was to write a test program that simulated my code. I did that and found that the test program behaved the same way that gnome-mplayer did in Linux and BSD. So I then opened a bug on GLIB. The comment was that the a GMutex was not guaranteed to be recursive or non-recursive. What this means is that depending on your environment the way it works changes. So I did a little chatting on irc and __tim told me to check out GCond objects. So I tweaked my test program from using a second lock to g_cond_wait(...) and changed the g_mutex_unlocks to g_cond_signal(...) . After that the test program ran correctly on both Linux and FreeBSD.
So after seeing how the test program worked, I made the needed changes to gnome-mplayer. Did some quick tests on Linux and FreeBSD and everything worked properly. The changes were committed to SVN, so expect to see gnome-mplayer available for *BSD in the near future.
1 comment:
thanks for sharing this site. you can download lots of ebook from here
http://febooo.blogspot.com
Post a Comment