From: Ewald S. <ew...@ra...> - 2002-03-13 14:45:57
|
Hi, I've found a deadlock in the video overlay code, but I'm not sure what wo= uld=20 be the best way to fix it. The deadlock is caused by locking the=20 'video_overlay_events_mutex' twice. This mutex is locked in=20 video_overlay_event() and again in remove_events_handle(), which is calle= d=20 from video_overlay_event() for 'free handle' events. Possible fix could be : 1. using a recursive mutex (easy, but not very portable) 2. remove the lock/unlock code from remove_events_handle() and put lock/u= nlock=20 around the only other call to this function, which is from the function=20 video_overlay_free_handle() 3. pass a boolean argument "int lock" to remove_events_handle() and only = lock=20 the mutex if 'lock' is true Any thoughts on this are appreciated, so I can finally fix the video over= lay=20 memory leaks. :) TIA. ewald |