Thread: Re: [Mplayerplug-in-devel] status of the code
Brought to you by:
kdekorte
From: Kevin D. <kde...@ya...> - 2004-02-29 00:58:38
|
Alex, So all the trouble you are seeing is only with mozilla 1.4 and not firefox? If so have you tried upgrading your mozilla to 1.6? The reason I ask is that if it is a bug in Mozilla that is corrected we need to get people to upgrade to something current. As for the pipes... I would really prefer not to do all that bandaid work if a simple upgrade to a current version of the browser is all that is needed. Locking is not a bad thing... and with the pipe approach you would still have to have an event loop to process the events in the queue and that would need to be a thread otherwise mozilla would be blocked. Kevin On Saturday 28 February 2004 12:59 pm, Alex Eskin wrote: > I do not see a solution except the following (admittedly radical) > suggestion: > > make the player thread a separate process. > > It would communicate > with the rest of the plugin via pipes. You can also have a control > pipe, and/or async signals. > > Is this possible? > > I think this low-tech approach would also help bring down the > complexity (no more locking), and make it easier to hunt for > bugs. Also the typical failure mode would not be a browser crash. > > thanks for reading this, > > Best, > > Alex > > --- Kevin DeKorte <kde...@ya...> wrote: > > Alex, > > > > Check out this page > > http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html > > > > I'm wondering if the gtk_thread_enter / leave need to > > be done in the main loop. > > > > Kevin > > > > --- Alex Eskin <ale...@ya...> wrote: > > > I am seeing all these symptoms (I do not see > > > "connecting" > > > or "playing" messages, only "downloading"), and I > > > get lots > > > of browser crashes. > > > > > > I am not sure if there is a solution. Putting the > > > gdk_thread_init > > > in NS_PluginInitialize() did not help. I still get > > > libgthread > > > unloaded upon plugin destruction, and then a crash > > > of something > > > in the gtk main loop. > > > > > > Do you know any mozilla gurus? > > > > > > Best, > > > > > > Alex > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > Alex, > > > > > > > > Ok, > > > > > > > > Last time I took the gdk_threads_init out the > > > > > > buttons > > > > > > > on the GUI didn't draw properly, but that was > > > > > > before > > > > > > > added the GTK_DRAWING_AREA for mplayer to draw on. > > > > > > So > > > > > > > I'm away from my development machine for the day > > > > > > so > > > > > > > I'll take a look at it when I get a chance. If you > > > > have time play around with it. > > > > > > > > I know if the thread locking is not working you'll > > > > never see the "Connecting" and "Playing" messages > > > > > > on > > > > > > > the gui or it will cause the browser to crash. So > > > > > > if > > > > > > > you are getting those messages and the browser is > > > > working then I guess the locking is working. > > > > > > > > Kevin > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > Kevin, > > > > > > > > > > Not doing a gdk_threads_init() at all > > > > > on mozilla fixes the crash on plugin unload. > > > > > It now works somewhat. > > > > > > > > > > I don't know if the locking still works though, > > > > > so this may not be the right fix. > > > > > > > > > > Any ideas? > > > > > > > > > > Alex > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > Alex, > > > > > > > > > > > > So let me get this straight > > > > > > > > > > > > Firefox 0.8 works with no problems? > > > > > > Mozilla 1.4 crashes? > > > > > > > > > > > > Kevin > > > > > > > > > > > > On Saturday 28 February 2004 08:26 am, Alex > > > > > > Eskin > > > > > > > > wrote: > > > > > > > Hi Kevin, > > > > > > > > > > > > > > Firefox Works! Thanks! > > > > > > > > > > > > > > I am completely stumped on how to get it to > > > > > > work > > > > > > > > with mozilla. > > > > > > > > > > > > I guess it has a different level of gtk > > > > > > > > > > integration. > > > > > > > > > > > > One thing I have noticed is that libgthread > > > > > > gets > > > > > > > > unloaded when > > > > > > > > > > > > the plugin is unloaded. The crash occurs > > > > > > when > > > > > > > > something is > > > > > > > > > > > > in the gtk main loop after plugin unload. It > > > > > > > > > > happens 100% > > > > > > > > > > > > of the time. Could you try it? > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> > > > > > > wrote: > > > > > > > > Alex, > > > > > > > > > > > > > > > > Can you do me a favor and try it with > > > > > > firefox > > > > > > > > 0.8 (Dag has a nice > > > > > > > > > > > > > RPM). > > > > > > > > > > > > > > > > I have done some work to help with the > > > > > > races. > > > > > > > > Perhaps all the > > > > > > > > > > > changes > > > > > > > > > > > > > > had not > > > > > > > > made it into anonymous CVS yet. SF is a > > > > > > little > > > > > > > > slow some times. > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > On Friday 27 February 2004 09:56 pm, Alex > > > > > > > > > > Eskin wrote: > > > > > > > > > Hi Kevin, > > > > > > > > > > > > > > > > > > Great Work! > > > > > > > > > > > > > > > > > > Still, I am still getting the crashes I > > > > > > have > > > > > > > > described in my > > > > > > > > > > > last > > > > > > > > > > > > > > two > > > > > > > > > > > > > > > > > e-mails. I am using mozilla 1.4 on > > > > > > fedora > > > > > > > > core 1, with all > > > > > > > > > > > updates > > > > > > > > > > > > > > > applied. > > > > > > > > > > > > > > > > > > To recap (for more info see the > > > > > > archives) > > > > > > > > > > > > 1) when using gtk2, I get a crash > > > > > > whenever I > > > > > > > > press the back > > > > > > > > > > > > > > button on the browser while the movie is > > > > > > > > > > playing. This persists > > > > > > > > > > > > > > even after the g_thread_init fix. > > > > > > > > > > > > > > > > > > This is 100% reproducible. I have > > > > > > included > > > > > > > > output from mozilla > > > > > > > > > > > > > running > > > > > > > > > > > > > > > > > under valgrind in a previous e-mail. > > > > > > > > > > > > > > > > > > It seems that the crash is caused by > > > > > > some > > > > > > > > thread doing glib > > > > > > > > > > > stuff > > > > > > > > > > > > > > > even after the plugin has been unloaded. > > > > > > Do > > > > > > > > you have any ideas > > > > > > > > > > > as > > > > > > > > > > > > > > > to how I can track this down further? > > > > > > > > > > > > > > > > > > 2) when using --enable-x I get > > > > > > intermittent > > > > > > > > crashes, which seem > > > > > > > > > > > > > > to be related to the player thread not > > > > > > > > > > beeing canceled > > > > > > > > > > > properly. > > > > > > > > > > > > > > > I think I know the cause of that one, > > > > > > and I > > > > > > > > am working on a > > > > > > > > > > > patch > > > > > > > > > > > > > > > which would do "pthread_cancel", etc. > > > > > > > > > > > > > > > > > > In a previous mail, > > > > > > > > > I have also included output from mozilla > > > > > > > > > > under valgrind which > > > > > > > > > > > > > > suggests this. > > > > > > > > > > > > > > > > > > 3) I had some crashes (using --enable-x) > > > > > > > > > > which occur after > > > > > > > > > > > > > > "signalling player from write". This > > > > > > is > > > > > > > > probably some sort of > > > > > > > > > > > > > > a race. It seems to be triggered when > > > > > > the > > > > > > > > file is mostly > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Get better spam protection with Yahoo! Mail. > http://antispam.yahoo.com/tools |
From: Kevin D. <kde...@ya...> - 2004-02-29 14:46:09
|
Alex, Yup it locks up for me... Kevin On Sunday 29 February 2004 12:07 am, Alex Eskin wrote: > Hi Kevin, > > Try the following with firefox: > > 1) go to www.apple.com/trailers and play a video > 2) press the back button while the video is playing > 3) Click on the "File" menu in the browser and choose > "Open File" > > At this point firefox deadlocks for me (so does mozilla 1.6). Does > it work for you? > > Best, > > Alex > > --- Kevin DeKorte <kde...@ya...> wrote: > > Alex, > > > > So all the trouble you are seeing is only with mozilla 1.4 and not > > firefox? If > > so have you tried upgrading your mozilla to 1.6? The reason I ask is > > that if > > it is a bug in Mozilla that is corrected we need to get people to > > upgrade to > > something current. > > > > As for the pipes... I would really prefer not to do all that bandaid > > work if a > > simple upgrade to a current version of the browser is all that is > > needed. > > > > Locking is not a bad thing... and with the pipe approach you would > > still have > > to have an event loop to process the events in the queue and that > > would need > > to be a thread otherwise mozilla would be blocked. > > > > Kevin > > > > On Saturday 28 February 2004 12:59 pm, Alex Eskin wrote: > > > I do not see a solution except the following (admittedly radical) > > > suggestion: > > > > > > make the player thread a separate process. > > > > > > It would communicate > > > with the rest of the plugin via pipes. You can also have a control > > > pipe, and/or async signals. > > > > > > Is this possible? > > > > > > I think this low-tech approach would also help bring down the > > > complexity (no more locking), and make it easier to hunt for > > > bugs. Also the typical failure mode would not be a browser crash. > > > > > > thanks for reading this, > > > > > > Best, > > > > > > Alex > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > Alex, > > > > > > > > Check out this page > > > > http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html > > > > > > > > I'm wondering if the gtk_thread_enter / leave need to > > > > be done in the main loop. > > > > > > > > Kevin > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > I am seeing all these symptoms (I do not see > > > > > "connecting" > > > > > or "playing" messages, only "downloading"), and I > > > > > get lots > > > > > of browser crashes. > > > > > > > > > > I am not sure if there is a solution. Putting the > > > > > gdk_thread_init > > > > > in NS_PluginInitialize() did not help. I still get > > > > > libgthread > > > > > unloaded upon plugin destruction, and then a crash > > > > > of something > > > > > in the gtk main loop. > > > > > > > > > > Do you know any mozilla gurus? > > > > > > > > > > Best, > > > > > > > > > > Alex > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > Alex, > > > > > > > > > > > > Ok, > > > > > > > > > > > > Last time I took the gdk_threads_init out the > > > > > > > > > > buttons > > > > > > > > > > > on the GUI didn't draw properly, but that was > > > > > > > > > > before > > > > > > > > > > > added the GTK_DRAWING_AREA for mplayer to draw on. > > > > > > > > > > So > > > > > > > > > > > I'm away from my development machine for the day > > > > > > > > > > so > > > > > > > > > > > I'll take a look at it when I get a chance. If you > > > > > > have time play around with it. > > > > > > > > > > > > I know if the thread locking is not working you'll > > > > > > never see the "Connecting" and "Playing" messages > > > > > > > > > > on > > > > > > > > > > > the gui or it will cause the browser to crash. So > > > > > > > > > > if > > > > > > > > > > > you are getting those messages and the browser is > > > > > > working then I guess the locking is working. > > > > > > > > > > > > Kevin > > > > > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > > > Kevin, > > > > > > > > > > > > > > Not doing a gdk_threads_init() at all > > > > > > > on mozilla fixes the crash on plugin unload. > > > > > > > It now works somewhat. > > > > > > > > > > > > > > I don't know if the locking still works though, > > > > > > > so this may not be the right fix. > > > > > > > > > > > > > > Any ideas? > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > > Alex, > > > > > > > > > > > > > > > > So let me get this straight > > > > > > > > > > > > > > > > Firefox 0.8 works with no problems? > > > > > > > > Mozilla 1.4 crashes? > > > > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > On Saturday 28 February 2004 08:26 am, Alex > > > > > > > > > > Eskin > > > > > > > > > > > > wrote: > > > > > > > > > Hi Kevin, > > > > > > > > > > > > > > > > > > Firefox Works! Thanks! > > > > > > > > > > > > > > > > > > I am completely stumped on how to get it to > > > > > > > > > > work > > > > > > > > > > > > with mozilla. > > > > > > > > > > > > > > > > I guess it has a different level of gtk > > > > > > > > > > > > > > integration. > > > > > > > > > > > > > > > > One thing I have noticed is that libgthread > > > > > > > > > > gets > > > > > > > > > > > > unloaded when > > > > > > > > > > > > > > > > the plugin is unloaded. The crash occurs > > > > > > > > > > when > > > > > > > > > > > > something is > > > > > > > > > > > > > > > > in the gtk main loop after plugin unload. It > > > > > > > > > > > > > > happens 100% > > > > > > > > > > > > > > > > of the time. Could you try it? > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> > > > > > > > > > > wrote: > > > > > > > > > > Alex, > > > > > > > > > > > > > > > > > > > > Can you do me a favor and try it with > > > > > > > > > > firefox > > > > > > > > > > > > 0.8 (Dag has a nice > > > > > > > > > > > > > > > > > RPM). > > > > > > > > > > > > > > > > > > > > I have done some work to help with the > > > > > > > > > > races. > > > > > > > > > > > > Perhaps all the > > > > > > > > > > > > > > > changes > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Get better spam protection with Yahoo! Mail. > http://antispam.yahoo.com/tools |
From: Kevin D. <kde...@ya...> - 2004-02-29 15:20:33
|
Alex, I've commited something to CVS that helps for me, might take a few hours to hit anonymous CVS. Kevin Patch Index: plugin-ui.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-ui.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** plugin-ui.cpp 27 Feb 2004 20:35:53 -0000 1.21 --- plugin-ui.cpp 29 Feb 2004 15:00:19 -0000 1.22 *************** *** 578,581 **** --- 578,582 ---- instance->player_window = 0; gtk_widget_destroy(instance->gtkwidget); + gdk_window_process_all_updates(); #endif Index: plugin.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** plugin.cpp 27 Feb 2004 20:35:53 -0000 1.21 --- plugin.cpp 29 Feb 2004 15:00:19 -0000 1.22 *************** *** 227,234 **** printf("~nsPluginInstance called\n"); - #ifdef GTK2_ENABLED - gdk_window_process_all_updates(); - #endif - if (mScriptablePeer != NULL) mScriptablePeer->SetInstance(NULL); --- 227,230 ---- *************** *** 449,452 **** --- 445,449 ---- ws = (NPSetWindowCallbackStruct *) aWindow->ws_info; + widget = XtWindowToWidget((Display *) ws->display, *************** *** 455,461 **** XtAddCallback(widget, XtNdestroyCallback, DestroyCB, (XtPointer) this); XtAddEventHandler(widget, ExposureMask, FALSE, (XtEventHandler) RedrawCB, this); ! display = ws->display; window = (Window) aWindow->window; --- 452,459 ---- XtAddCallback(widget, XtNdestroyCallback, DestroyCB, (XtPointer) this); + #ifdef X_ENABLED XtAddEventHandler(widget, ExposureMask, FALSE, (XtEventHandler) RedrawCB, this); ! #endif display = ws->display; window = (Window) aWindow->window; *************** *** 474,483 **** #ifdef GTK2_ENABLED - if (!g_thread_supported()) g_thread_init(NULL); - gdk_threads_init(); g_signal_connect(G_OBJECT(gtkwidget), "expose_event", G_CALLBACK(gtkwin_expose), this); - g_signal_connect(G_OBJECT(gtkwidget), "destroy", - G_CALLBACK(gtk_widget_destroy),>kwidget); gtk_widget_set_size_request(gtkwidget, aWindow->width, aWindow->height); --- 472,477 ---- *************** *** 561,565 **** XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), GDK_WINDOW_XWINDOW(gtkwidget->window)); ! gdk_threads_leave(); --- 555,559 ---- XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), GDK_WINDOW_XWINDOW(gtkwidget->window)); ! gdk_threads_leave(); On Sunday 29 February 2004 07:34 am, Kevin DeKorte wrote: > Alex, > > Yup it locks up for me... > > Kevin > > On Sunday 29 February 2004 12:07 am, Alex Eskin wrote: > > Hi Kevin, > > > > Try the following with firefox: > > > > 1) go to www.apple.com/trailers and play a video > > 2) press the back button while the video is playing > > 3) Click on the "File" menu in the browser and choose > > "Open File" > > > > At this point firefox deadlocks for me (so does mozilla 1.6). Does > > it work for you? > > > > Best, > > > > Alex > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > Alex, > > > > > > So all the trouble you are seeing is only with mozilla 1.4 and not > > > firefox? If > > > so have you tried upgrading your mozilla to 1.6? The reason I ask is > > > that if > > > it is a bug in Mozilla that is corrected we need to get people to > > > upgrade to > > > something current. > > > > > > As for the pipes... I would really prefer not to do all that bandaid > > > work if a > > > simple upgrade to a current version of the browser is all that is > > > needed. > > > > > > Locking is not a bad thing... and with the pipe approach you would > > > still have > > > to have an event loop to process the events in the queue and that > > > would need > > > to be a thread otherwise mozilla would be blocked. > > > > > > Kevin > > > > > > On Saturday 28 February 2004 12:59 pm, Alex Eskin wrote: > > > > I do not see a solution except the following (admittedly radical) > > > > suggestion: > > > > > > > > make the player thread a separate process. > > > > > > > > It would communicate > > > > with the rest of the plugin via pipes. You can also have a control > > > > pipe, and/or async signals. > > > > > > > > Is this possible? > > > > > > > > I think this low-tech approach would also help bring down the > > > > complexity (no more locking), and make it easier to hunt for > > > > bugs. Also the typical failure mode would not be a browser crash. > > > > > > > > thanks for reading this, > > > > > > > > Best, > > > > > > > > Alex > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > Alex, > > > > > > > > > > Check out this page > > > > > http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html > > > > > > > > > > I'm wondering if the gtk_thread_enter / leave need to > > > > > be done in the main loop. > > > > > > > > > > Kevin > > > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > > I am seeing all these symptoms (I do not see > > > > > > "connecting" > > > > > > or "playing" messages, only "downloading"), and I > > > > > > get lots > > > > > > of browser crashes. > > > > > > > > > > > > I am not sure if there is a solution. Putting the > > > > > > gdk_thread_init > > > > > > in NS_PluginInitialize() did not help. I still get > > > > > > libgthread > > > > > > unloaded upon plugin destruction, and then a crash > > > > > > of something > > > > > > in the gtk main loop. > > > > > > > > > > > > Do you know any mozilla gurus? > > > > > > > > > > > > Best, > > > > > > > > > > > > Alex > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > Alex, > > > > > > > > > > > > > > Ok, > > > > > > > > > > > > > > Last time I took the gdk_threads_init out the > > > > > > > > > > > > buttons > > > > > > > > > > > > > on the GUI didn't draw properly, but that was > > > > > > > > > > > > before > > > > > > > > > > > > > added the GTK_DRAWING_AREA for mplayer to draw on. > > > > > > > > > > > > So > > > > > > > > > > > > > I'm away from my development machine for the day > > > > > > > > > > > > so > > > > > > > > > > > > > I'll take a look at it when I get a chance. If you > > > > > > > have time play around with it. > > > > > > > > > > > > > > I know if the thread locking is not working you'll > > > > > > > never see the "Connecting" and "Playing" messages > > > > > > > > > > > > on > > > > > > > > > > > > > the gui or it will cause the browser to crash. So > > > > > > > > > > > > if > > > > > > > > > > > > > you are getting those messages and the browser is > > > > > > > working then I guess the locking is working. > > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > > > > Kevin, > > > > > > > > > > > > > > > > Not doing a gdk_threads_init() at all > > > > > > > > on mozilla fixes the crash on plugin unload. > > > > > > > > It now works somewhat. > > > > > > > > > > > > > > > > I don't know if the locking still works though, > > > > > > > > so this may not be the right fix. > > > > > > > > > > > > > > > > Any ideas? > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > > > Alex, > > > > > > > > > > > > > > > > > > So let me get this straight > > > > > > > > > > > > > > > > > > Firefox 0.8 works with no problems? > > > > > > > > > Mozilla 1.4 crashes? > > > > > > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > > > On Saturday 28 February 2004 08:26 am, Alex > > > > > > > > > > > > Eskin > > > > > > > > > > > > > > wrote: > > > > > > > > > > Hi Kevin, > > > > > > > > > > > > > > > > > > > > Firefox Works! Thanks! > > > > > > > > > > > > > > > > > > > > I am completely stumped on how to get it to > > > > > > > > > > > > work > > > > > > > > > > > > > > with mozilla. > > > > > > > > > > > > > > > > > > I guess it has a different level of gtk > > > > > > > > > > > > > > > > integration. > > > > > > > > > > > > > > > > > > One thing I have noticed is that libgthread > > > > > > > > > > > > gets > > > > > > > > > > > > > > unloaded when > > > > > > > > > > > > > > > > > > the plugin is unloaded. The crash occurs > > > > > > > > > > > > when > > > > > > > > > > > > > > something is > > > > > > > > > > > > > > > > > > in the gtk main loop after plugin unload. It > > > > > > > > > > > > > > > > happens 100% > > > > > > > > > > > > > > > > > > of the time. Could you try it? > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> > > > > > > > > > > > > wrote: > > > > > > > > > > > Alex, > > > > > > > > > > > > > > > > > > > > > > Can you do me a favor and try it with > > > > > > > > > > > > firefox > > > > > > > > > > > > > > 0.8 (Dag has a nice > > > > > > > > > > > > > > > > > > > RPM). > > > > > > > > > > > > > > > > > > > > > > I have done some work to help with the > > > > > > > > > > > > races. > > > > > > > > > > > > > > Perhaps all the > > > > > > > > > > > > > > > > > changes > > > > === message truncated === > > > > > > __________________________________ > > Do you Yahoo!? > > Get better spam protection with Yahoo! Mail. > > http://antispam.yahoo.com/tools > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > _______________________________________________ > Mplayerplug-in-devel mailing list > Mpl...@li... > https://lists.sourceforge.net/lists/listinfo/mplayerplug-in-devel |
From: Kevin D. <kde...@ya...> - 2004-02-29 15:22:26
|
Dang, right after I sent this I tried it again and it hung... But with playing the movie and not the GUI Kevin On Sunday 29 February 2004 08:08 am, Kevin DeKorte wrote: > Alex, > > I've commited something to CVS that helps for me, might take a few hours to > hit anonymous CVS. > > Kevin > > > Patch > > Index: plugin-ui.cpp > =================================================================== > RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-ui.cpp,v > retrieving revision 1.21 > retrieving revision 1.22 > diff -C2 -d -r1.21 -r1.22 > *** plugin-ui.cpp 27 Feb 2004 20:35:53 -0000 1.21 > --- plugin-ui.cpp 29 Feb 2004 15:00:19 -0000 1.22 > *************** > *** 578,581 **** > --- 578,582 ---- > instance->player_window = 0; > gtk_widget_destroy(instance->gtkwidget); > + gdk_window_process_all_updates(); > #endif > > > Index: plugin.cpp > =================================================================== > RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.cpp,v > retrieving revision 1.21 > retrieving revision 1.22 > diff -C2 -d -r1.21 -r1.22 > *** plugin.cpp 27 Feb 2004 20:35:53 -0000 1.21 > --- plugin.cpp 29 Feb 2004 15:00:19 -0000 1.22 > *************** > *** 227,234 **** > printf("~nsPluginInstance called\n"); > > - #ifdef GTK2_ENABLED > - gdk_window_process_all_updates(); > - #endif > - > if (mScriptablePeer != NULL) > mScriptablePeer->SetInstance(NULL); > --- 227,230 ---- > *************** > *** 449,452 **** > --- 445,449 ---- > ws = (NPSetWindowCallbackStruct *) aWindow->ws_info; > > + > widget = > XtWindowToWidget((Display *) ws->display, > *************** > *** 455,461 **** > XtAddCallback(widget, XtNdestroyCallback, DestroyCB, > (XtPointer) this); > XtAddEventHandler(widget, ExposureMask, FALSE, > (XtEventHandler) RedrawCB, this); > ! > display = ws->display; > window = (Window) aWindow->window; > --- 452,459 ---- > XtAddCallback(widget, XtNdestroyCallback, DestroyCB, > (XtPointer) this); > + #ifdef X_ENABLED > XtAddEventHandler(widget, ExposureMask, FALSE, > (XtEventHandler) RedrawCB, this); > ! #endif > display = ws->display; > window = (Window) aWindow->window; > *************** > *** 474,483 **** > > #ifdef GTK2_ENABLED > - if (!g_thread_supported()) g_thread_init(NULL); > - gdk_threads_init(); > g_signal_connect(G_OBJECT(gtkwidget), "expose_event", > G_CALLBACK(gtkwin_expose), this); > - g_signal_connect(G_OBJECT(gtkwidget), "destroy", > - G_CALLBACK(gtk_widget_destroy),>kwidget); > gtk_widget_set_size_request(gtkwidget, aWindow->width, > aWindow->height); > --- 472,477 ---- > *************** > *** 561,565 **** > XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), > GDK_WINDOW_XWINDOW(gtkwidget->window)); > ! > gdk_threads_leave(); > > --- 555,559 ---- > XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), > GDK_WINDOW_XWINDOW(gtkwidget->window)); > ! > gdk_threads_leave(); > > On Sunday 29 February 2004 07:34 am, Kevin DeKorte wrote: > > Alex, > > > > Yup it locks up for me... > > > > Kevin > > > > On Sunday 29 February 2004 12:07 am, Alex Eskin wrote: > > > Hi Kevin, > > > > > > Try the following with firefox: > > > > > > 1) go to www.apple.com/trailers and play a video > > > 2) press the back button while the video is playing > > > 3) Click on the "File" menu in the browser and choose > > > "Open File" > > > > > > At this point firefox deadlocks for me (so does mozilla 1.6). Does > > > it work for you? > > > > > > Best, > > > > > > Alex > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > Alex, > > > > > > > > So all the trouble you are seeing is only with mozilla 1.4 and not > > > > firefox? If > > > > so have you tried upgrading your mozilla to 1.6? The reason I ask is > > > > that if > > > > it is a bug in Mozilla that is corrected we need to get people to > > > > upgrade to > > > > something current. > > > > > > > > As for the pipes... I would really prefer not to do all that bandaid > > > > work if a > > > > simple upgrade to a current version of the browser is all that is > > > > needed. > > > > > > > > Locking is not a bad thing... and with the pipe approach you would > > > > still have > > > > to have an event loop to process the events in the queue and that > > > > would need > > > > to be a thread otherwise mozilla would be blocked. > > > > > > > > Kevin > > > > > > > > On Saturday 28 February 2004 12:59 pm, Alex Eskin wrote: > > > > > I do not see a solution except the following (admittedly radical) > > > > > suggestion: > > > > > > > > > > make the player thread a separate process. > > > > > > > > > > It would communicate > > > > > with the rest of the plugin via pipes. You can also have a control > > > > > pipe, and/or async signals. > > > > > > > > > > Is this possible? > > > > > > > > > > I think this low-tech approach would also help bring down the > > > > > complexity (no more locking), and make it easier to hunt for > > > > > bugs. Also the typical failure mode would not be a browser crash. > > > > > > > > > > thanks for reading this, > > > > > > > > > > Best, > > > > > > > > > > Alex > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > Alex, > > > > > > > > > > > > Check out this page > > > > > > http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html > > > > > > > > > > > > I'm wondering if the gtk_thread_enter / leave need to > > > > > > be done in the main loop. > > > > > > > > > > > > Kevin > > > > > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > > > I am seeing all these symptoms (I do not see > > > > > > > "connecting" > > > > > > > or "playing" messages, only "downloading"), and I > > > > > > > get lots > > > > > > > of browser crashes. > > > > > > > > > > > > > > I am not sure if there is a solution. Putting the > > > > > > > gdk_thread_init > > > > > > > in NS_PluginInitialize() did not help. I still get > > > > > > > libgthread > > > > > > > unloaded upon plugin destruction, and then a crash > > > > > > > of something > > > > > > > in the gtk main loop. > > > > > > > > > > > > > > Do you know any mozilla gurus? > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > > Alex, > > > > > > > > > > > > > > > > Ok, > > > > > > > > > > > > > > > > Last time I took the gdk_threads_init out the > > > > > > > > > > > > > > buttons > > > > > > > > > > > > > > > on the GUI didn't draw properly, but that was > > > > > > > > > > > > > > before > > > > > > > > > > > > > > > added the GTK_DRAWING_AREA for mplayer to draw on. > > > > > > > > > > > > > > So > > > > > > > > > > > > > > > I'm away from my development machine for the day > > > > > > > > > > > > > > so > > > > > > > > > > > > > > > I'll take a look at it when I get a chance. If you > > > > > > > > have time play around with it. > > > > > > > > > > > > > > > > I know if the thread locking is not working you'll > > > > > > > > never see the "Connecting" and "Playing" messages > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > the gui or it will cause the browser to crash. So > > > > > > > > > > > > > > if > > > > > > > > > > > > > > > you are getting those messages and the browser is > > > > > > > > working then I guess the locking is working. > > > > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > --- Alex Eskin <ale...@ya...> wrote: > > > > > > > > > Kevin, > > > > > > > > > > > > > > > > > > Not doing a gdk_threads_init() at all > > > > > > > > > on mozilla fixes the crash on plugin unload. > > > > > > > > > It now works somewhat. > > > > > > > > > > > > > > > > > > I don't know if the locking still works though, > > > > > > > > > so this may not be the right fix. > > > > > > > > > > > > > > > > > > Any ideas? > > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > > > > Alex, > > > > > > > > > > > > > > > > > > > > So let me get this straight > > > > > > > > > > > > > > > > > > > > Firefox 0.8 works with no problems? > > > > > > > > > > Mozilla 1.4 crashes? > > > > > > > > > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > > > > > On Saturday 28 February 2004 08:26 am, Alex > > > > > > > > > > > > > > Eskin > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > Hi Kevin, > > > > > > > > > > > > > > > > > > > > > > Firefox Works! Thanks! > > > > > > > > > > > > > > > > > > > > > > I am completely stumped on how to get it to > > > > > > > > > > > > > > work > > > > > > > > > > > > > > > > with mozilla. > > > > > > > > > > > > > > > > > > > > I guess it has a different level of gtk > > > > > > > > > > > > > > > > > > integration. > > > > > > > > > > > > > > > > > > > > One thing I have noticed is that libgthread > > > > > > > > > > > > > > gets > > > > > > > > > > > > > > > > unloaded when > > > > > > > > > > > > > > > > > > > > the plugin is unloaded. The crash occurs > > > > > > > > > > > > > > when > > > > > > > > > > > > > > > > something is > > > > > > > > > > > > > > > > > > > > in the gtk main loop after plugin unload. It > > > > > > > > > > > > > > > > > > happens 100% > > > > > > > > > > > > > > > > > > > > of the time. Could you try it? > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > Alex, > > > > > > > > > > > > > > > > > > > > > > > > Can you do me a favor and try it with > > > > > > > > > > > > > > firefox > > > > > > > > > > > > > > > > 0.8 (Dag has a nice > > > > > > > > > > > > > > > > > > > > > RPM). > > > > > > > > > > > > > > > > > > > > > > > > I have done some work to help with the > > > > > > > > > > > > > > races. > > > > > > > > > > > > > > > > Perhaps all the > > > > > > > > > > > > > > > > > > > changes > > > > > > === message truncated === > > > > > > > > > __________________________________ > > > Do you Yahoo!? > > > Get better spam protection with Yahoo! Mail. > > > http://antispam.yahoo.com/tools > > > > ------------------------------------------------------- > > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > > Build and deploy apps & Web services for Linux with > > a free DVD software kit from IBM. Click Now! > > http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > > _______________________________________________ > > Mplayerplug-in-devel mailing list > > Mpl...@li... > > https://lists.sourceforge.net/lists/listinfo/mplayerplug-in-devel > > ------------------------------------------------------- > SF.Net is sponsored by: Speed Start Your Linux Apps Now. > Build and deploy apps & Web services for Linux with > a free DVD software kit from IBM. Click Now! > http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click > _______________________________________________ > Mplayerplug-in-devel mailing list > Mpl...@li... > https://lists.sourceforge.net/lists/listinfo/mplayerplug-in-devel |
From: Kevin D. <kde...@ya...> - 2004-02-29 21:43:49
|
Awesome, this seems to work pretty good in gtk1 as well, couple of minor glitches there... Thanks Alex for finding this. CVS should be updated in a few hours. And so far so good. Kevin On Sunday 29 February 2004 09:31 am, Alex Eskin wrote: > Ok, > > So I think g_idle_add is the recommended way to solve the problem > and keep the current plugin architecture. > > ----------------From the GTK FAQ-------------------- > > 5.4. What's an easy way to run a function in the thread with the main > loop? [GTK 2.x] > What's an easy way to run a function in the thread with the main loop? > [GTK 2.x] > > Sometimes the simplest way to set up a threaded program is to make all > the GTK+ calls in a single thread. In such a program, you should still > call g_threads_init(), but don't need to call gdk_threads_init(), > gkd_threads_enter(), and gdk_threads_leave(). > > If you set your program up this way, how then do you get the thread > making GTK+ calls and running the main loop to do something in response > to another thread? > > An easy way to do it is to take advantage of the fact that the GLib > main loop functions are all thread safe, and can be called from any > thread by adding an idle function with g_idle_add(). The function > provided will be called at the next opportunity by the main thread. If > you want your function to take priority over event handling and > drawing, you can instead use g_idle_add_full() and pass in a priority > of G_PRIORITY_HIGH. > > --- Kevin DeKorte <kde...@ya...> wrote: > > Dang, > > > > right after I sent this I tried it again and it hung... But with > > playing the > > movie and not the GUI > > > > Kevin > > > > On Sunday 29 February 2004 08:08 am, Kevin DeKorte wrote: > > > Alex, > > > > > > I've commited something to CVS that helps for me, might take a few > > > > hours to > > > > > hit anonymous CVS. > > > > > > Kevin > > > > > > > > > Patch > > > > > > Index: plugin-ui.cpp > > > =================================================================== > > > RCS file: > > > > /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-ui.cpp,v > > > > > retrieving revision 1.21 > > > retrieving revision 1.22 > > > diff -C2 -d -r1.21 -r1.22 > > > *** plugin-ui.cpp 27 Feb 2004 20:35:53 -0000 1.21 > > > --- plugin-ui.cpp 29 Feb 2004 15:00:19 -0000 1.22 > > > *************** > > > *** 578,581 **** > > > --- 578,582 ---- > > > instance->player_window = 0; > > > gtk_widget_destroy(instance->gtkwidget); > > > + gdk_window_process_all_updates(); > > > #endif > > > > > > > > > Index: plugin.cpp > > > =================================================================== > > > RCS file: > > > > /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.cpp,v > > > > > retrieving revision 1.21 > > > retrieving revision 1.22 > > > diff -C2 -d -r1.21 -r1.22 > > > *** plugin.cpp 27 Feb 2004 20:35:53 -0000 1.21 > > > --- plugin.cpp 29 Feb 2004 15:00:19 -0000 1.22 > > > *************** > > > *** 227,234 **** > > > printf("~nsPluginInstance called\n"); > > > > > > - #ifdef GTK2_ENABLED > > > - gdk_window_process_all_updates(); > > > - #endif > > > - > > > if (mScriptablePeer != NULL) > > > mScriptablePeer->SetInstance(NULL); > > > --- 227,230 ---- > > > *************** > > > *** 449,452 **** > > > --- 445,449 ---- > > > ws = (NPSetWindowCallbackStruct *) aWindow->ws_info; > > > > > > + > > > widget = > > > XtWindowToWidget((Display *) ws->display, > > > *************** > > > *** 455,461 **** > > > XtAddCallback(widget, XtNdestroyCallback, DestroyCB, > > > (XtPointer) this); > > > XtAddEventHandler(widget, ExposureMask, FALSE, > > > (XtEventHandler) RedrawCB, this); > > > ! > > > display = ws->display; > > > window = (Window) aWindow->window; > > > --- 452,459 ---- > > > XtAddCallback(widget, XtNdestroyCallback, DestroyCB, > > > (XtPointer) this); > > > + #ifdef X_ENABLED > > > XtAddEventHandler(widget, ExposureMask, FALSE, > > > (XtEventHandler) RedrawCB, this); > > > ! #endif > > > display = ws->display; > > > window = (Window) aWindow->window; > > > *************** > > > *** 474,483 **** > > > > > > #ifdef GTK2_ENABLED > > > - if (!g_thread_supported()) g_thread_init(NULL); > > > - gdk_threads_init(); > > > g_signal_connect(G_OBJECT(gtkwidget), "expose_event", > > > G_CALLBACK(gtkwin_expose), this); > > > - g_signal_connect(G_OBJECT(gtkwidget), "destroy", > > > - > > > > G_CALLBACK(gtk_widget_destroy),>kwidget); > > > > > gtk_widget_set_size_request(gtkwidget, aWindow->width, > > > aWindow->height); > > > --- 472,477 ---- > > > *************** > > > *** 561,565 **** > > > XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), > > > GDK_WINDOW_XWINDOW(gtkwidget->window)); > > > ! > > > gdk_threads_leave(); > > > > > > --- 555,559 ---- > > > XMapWindow(GDK_WINDOW_XDISPLAY(gtkwidget->window), > > > GDK_WINDOW_XWINDOW(gtkwidget->window)); > > > ! > > > gdk_threads_leave(); > > > > > > On Sunday 29 February 2004 07:34 am, Kevin DeKorte wrote: > > > > Alex, > > > > > > > > Yup it locks up for me... > > > > > > > > Kevin > > > > > > > > On Sunday 29 February 2004 12:07 am, Alex Eskin wrote: > > > > > Hi Kevin, > > > > > > > > > > Try the following with firefox: > > > > > > > > > > 1) go to www.apple.com/trailers and play a video > > > > > 2) press the back button while the video is playing > > > > > 3) Click on the "File" menu in the browser and choose > > > > > "Open File" > > > > > > > > > > At this point firefox deadlocks for me (so does mozilla 1.6). > > > > Does > > > > > > > it work for you? > > > > > > > > > > Best, > > > > > > > > > > Alex > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > Alex, > > > > > > > > > > > > So all the trouble you are seeing is only with mozilla 1.4 > > > > and not > > > > > > > > firefox? If > > > > > > so have you tried upgrading your mozilla to 1.6? The reason I > > > > ask is > > > > > > > > that if > > > > > > it is a bug in Mozilla that is corrected we need to get > > > > people to > > > > > > > > upgrade to > > > > > > something current. > > > > > > > > > > > > As for the pipes... I would really prefer not to do all that > > > > bandaid > > > > > > > > work if a > > > > > > simple upgrade to a current version of the browser is all > > > > that is > > > > > > > > needed. > > > > > > > > > > > > Locking is not a bad thing... and with the pipe approach you > > > > would > > > > > > > > still have > > > > > > to have an event loop to process the events in the queue and > > > > that > > > > > > > > would need > > > > > > to be a thread otherwise mozilla would be blocked. > > > > > > > > > > > > Kevin > > > > > > > > > > > > On Saturday 28 February 2004 12:59 pm, Alex Eskin wrote: > > > > > > > I do not see a solution except the following (admittedly > > > > radical) > > > > > > > > > suggestion: > > > > > > > > > > > > > > make the player thread a separate process. > > > > > > > > > > > > > > It would communicate > > > > > > > with the rest of the plugin via pipes. You can also have a > > > > control > > > > > > > > > pipe, and/or async signals. > > > > > > > > > > > > > > Is this possible? > > > > > > > > > > > > > > I think this low-tech approach would also help bring down > > > > the > > > > > > > > > complexity (no more locking), and make it easier to hunt > > > > for > > > > > > > > > bugs. Also the typical failure mode would not be a browser > > > > crash. > > > > > > > > > thanks for reading this, > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > Alex > > > > > > > > > > > > > > --- Kevin DeKorte <kde...@ya...> wrote: > > > > > > > > Alex, > > > > > > > > > > > > > > > > Check out this page > > > > http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Get better spam protection with Yahoo! Mail. > http://antispam.yahoo.com/tools |