And request_contents is 10x more evil. As far as I can see, there's no good way to fix this from a clipboard perspective.
Dom --- Martin Sevior <[EMAIL PROTECTED]> wrote: > HI everyone, > In our current clipboard in unix we have a > method > > XAP_UnixClipboard::_getDataFromServer((T_AllowGet > tFrom, const char** > formatList, > void ** ppData, > UT_uint32 * > pLen, > const char **pszFormatFound) > > Which contains a call to... > > gtk_clipboard_wait_for_contents (clipboard, atom); > > This function allows the gtk event loop to cycle > which is really, really > bad. > > The method _getDataFromServer is called on almost > every key press > because it attached to toolbar listener to see if > there is data that can > be pasted. > > Have calls to a method which cycle the main loop in > an uncontrolled way > during the processing of events called out of the > main loop is just > asking for trouble. Try this. > > Fire up abiword within gdb. Open an existing > document which paragraph > breaks and hold down the delete key. Eventually you > hit an assert. > > **** (1) Assert **** > **** (1) pR at > ../../../../../abi-unstable/src/text/fmt/xp/fl_BlockLayout.cpp:1393 > **** > **** (1) Continue ? (y/n) [y] : n > > If you follow the stack trace up through the gtk-* > loop propagation you > eventually get to > > > XAP_UnixClipboard::_getDataFromServer(XAP_UnixClipboard::_T_AllowGet, > char const**, void**, unsigned*, char const**) > (this=0x856ac48, > tFrom=TAG_ClipboardOnly, formatList=0x840e4c0, > ppData=0xbfffea60, > pLen=0xbfffea5c, pszFormatFound=0xbfffea64) > at > ../../../../../abi-unstable/src/af/xap/unix/xap_UnixClipboard.cpp:254 > 254 GtkSelectionData* selection = > gtk_clipboard_wait_for_contents (clipboard, atom); > > > So this function caused us to process a new event > before the previous > event had been finished. > > This is really bad and is the root cause of a number > of the races we've > had recently. > > So we have to find a way to not call this function > or to block the > processing of gtk events while we're waiting for an > answer from this > function. > > Dom was working on this a little while ago but I > thought I'd tell > everyone what the issue is. The good news is that > once this is fixed abi > will be stabler than ever since we've really been > stressing it in an > unkind way. > > Cheers > > Martin > > > > __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus � Powerful. Affordable. Sign up now. http://mailplus.yahoo.com
