X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=projects%2Fmozilla%2Fvlcshell.cpp;h=e229bb1b273f6c8f8798d9bfd82040fd1691800c;hb=0565b5c2e5062b41e6e1d2b441724899bfdcf38d;hp=151c615a185ff726e6ac4628af39d2f95fef109a;hpb=272817e4e8be36e209ea64e5de1784f951bc8ebb;p=vlc diff --git a/projects/mozilla/vlcshell.cpp b/projects/mozilla/vlcshell.cpp index 151c615a18..e229bb1b27 100644 --- a/projects/mozilla/vlcshell.cpp +++ b/projects/mozilla/vlcshell.cpp @@ -47,12 +47,10 @@ /* Enable/disable debugging printf's for X11 resizing */ #undef X11_RESIZE_DEBUG -#define WINDOW_TEXT "Waiting for video" - /***************************************************************************** * Unix-only declarations ******************************************************************************/ -#ifdef XP_UNIX +#if defined(XP_UNIX) static void Redraw( Widget w, XtPointer closure, XEvent *event ); static void ControlHandler( Widget w, XtPointer closure, XEvent *event ); @@ -201,19 +199,23 @@ int16 NPP_HandleEvent( NPP instance, void * event ) const NPWindow& npwindow = p_plugin->getWindow(); if( npwindow.window ) { - int hasVout = FALSE; + bool hasVout = false; if( p_plugin->playlist_isplaying(&ex) ) { hasVout = p_plugin->player_has_vout(NULL); if( hasVout ) { +#ifdef NOT_WORKING libvlc_rectangle_t area; area.left = 0; area.top = 0; area.right = npwindow.width; area.bottom = npwindow.height; libvlc_video_redraw_rectangle(p_plugin->getMD(&ex), &area, NULL); +#else +#warning disabled code +#endif } } libvlc_exception_clear(&ex); @@ -239,7 +241,8 @@ int16 NPP_HandleEvent( NPP instance, void * event ) ForeColor(whiteColor); MoveTo( (npwindow.width-80)/ 2 , npwindow.height / 2 ); - DrawText( WINDOW_TEXT , 0 , strlen(WINDOW_TEXT) ); + if( p_plugin->psz_text ) + DrawText( p_plugin->psz_text, 0, strlen(p_plugin->psz_text) ); } } return true; @@ -337,6 +340,16 @@ NPError NPP_Destroy( NPP instance, NPSavedData** save ) } #endif + libvlc_exception_t ex; + libvlc_exception_init(&ex); + int val = p_plugin->playlist_isplaying(&ex); + libvlc_exception_clear(&ex); + if(val) + { + p_plugin->playlist_stop(&ex); + libvlc_exception_clear(&ex); + } + delete p_plugin; return NPERR_NO_ERROR; @@ -344,7 +357,7 @@ NPError NPP_Destroy( NPP instance, NPSavedData** save ) NPError NPP_SetWindow( NPP instance, NPWindow* window ) { -#if defined(XP_UNIX) && !defined(__APPLE__) +#if defined(XP_UNIX) Window control; unsigned int i_control_height = 0, i_control_width = 0; #endif @@ -362,7 +375,7 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) return NPERR_NO_ERROR; } -#if defined(XP_UNIX) && !defined(__APPLE__) +#if defined(XP_UNIX) control = p_plugin->getControlWindow(); #endif @@ -387,12 +400,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) { /* check if plugin has a new parent window */ CGrafPtr drawable = (((NP_Port*) (window->window))->port); - if( !curwin.window || drawable != (((NP_Port*) (curwin.window))->port) ) - { - /* set/change parent window */ - libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex); - libvlc_exception_clear(&ex); - } /* as MacOS X video output is windowless, set viewport */ libvlc_rectangle_t view, clip; @@ -412,19 +419,18 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) clip.left = window->clipRect.left; clip.bottom = window->clipRect.bottom; clip.right = window->clipRect.right; - +#ifdef NOT_WORKING libvlc_video_set_viewport(p_vlc, p_plugin->getMD(&ex), &view, &clip, &ex); libvlc_exception_clear(&ex); - +#else +#warning disabled code +#endif /* remember new window */ p_plugin->setWindow(*window); } else if( curwin.window ) { /* change/set parent */ - libvlc_video_set_parent(p_vlc, 0, &ex); - libvlc_exception_clear(&ex); - curwin.window = NULL; } #endif /* XP_MACOSX */ @@ -457,10 +463,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS; SetWindowLong((HWND)drawable, GWL_STYLE, style); - /* change/set parent */ - libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex); - libvlc_exception_clear(&ex); - /* remember new window */ p_plugin->setWindow(*window); @@ -476,15 +478,11 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) SetWindowLong( oldwin, GWL_WNDPROC, (LONG)(p_plugin->getWindowProc()) ); p_plugin->setWindowProc(NULL); - /* change/set parent */ - libvlc_video_set_parent(p_vlc, 0, &ex); - libvlc_exception_clear(&ex); - curwin.window = NULL; } #endif /* XP_WIN */ -#ifdef XP_UNIX +#if defined(XP_UNIX) /* default to hidden toolbar, shown at the end of this method if asked * * developers note : getToolbarSize need to wait the end of this method */ @@ -529,10 +527,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) XtAddEventHandler( w, ButtonReleaseMask, FALSE, (XtEventHandler)ControlHandler, p_plugin ); - /* set/change parent window */ - libvlc_video_set_parent( p_vlc, (libvlc_drawable_t) video, &ex ); - libvlc_exception_clear(&ex); - /* remember window */ p_plugin->setWindow( *window ); p_plugin->setVideoWindow( video ); @@ -553,9 +547,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) } else if( curwin.window ) { - /* change/set parent */ - libvlc_video_set_parent(p_vlc, 0, &ex); - libvlc_exception_clear(&ex); curwin.window = NULL; } #endif /* XP_UNIX */ @@ -568,7 +559,8 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window ) { if( p_plugin->b_autoplay ) { - p_plugin->playlist_play(NULL); + p_plugin->playlist_play(&ex); + libvlc_exception_clear(&ex); } } p_plugin->b_stream = true; @@ -754,8 +746,9 @@ static LRESULT CALLBACK Manage( HWND p_hwnd, UINT i_msg, WPARAM wpar, LPARAM lpa FillRect( hdc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH) ); SetTextColor(hdc, RGB(255, 255, 255)); SetBkColor(hdc, RGB(0, 0, 0)); - DrawText( hdc, WINDOW_TEXT, strlen(WINDOW_TEXT), &rect, - DT_CENTER|DT_VCENTER|DT_SINGLELINE); + if( p_plugin->psz_text ) + DrawText( hdc, p_plugin->psz_text, strlen(p_plugin->psz_text), &rect, + DT_CENTER|DT_VCENTER|DT_SINGLELINE); EndPaint( p_hwnd, &paintstruct ); return 0L; @@ -771,7 +764,7 @@ static LRESULT CALLBACK Manage( HWND p_hwnd, UINT i_msg, WPARAM wpar, LPARAM lpa /****************************************************************************** * UNIX-only methods *****************************************************************************/ -#ifdef XP_UNIX +#if defined(XP_UNIX) static void Redraw( Widget w, XtPointer closure, XEvent *event ) { VlcPlugin* p_plugin = reinterpret_cast(closure); @@ -798,9 +791,10 @@ static void Redraw( Widget w, XtPointer closure, XEvent *event ) gcv.foreground = WhitePixel( p_display, 0 ); XChangeGC( p_display, gc, GCForeground, &gcv ); - XDrawString( p_display, video, gc, - window.width / 2 - 40, (window.height - i_control_height) / 2, - WINDOW_TEXT, strlen(WINDOW_TEXT) ); + if( p_plugin->psz_text ) + XDrawString( p_display, video, gc, + window.width / 2 - 40, (window.height - i_control_height) / 2, + p_plugin->psz_text, strlen(p_plugin->psz_text) ); XFreeGC( p_display, gc ); p_plugin->redrawToolbar(); @@ -861,8 +855,7 @@ static void ControlHandler( Widget w, XtPointer closure, XEvent *event ) case clicked_Mute: case clicked_Unmute: { - libvlc_audio_toggle_mute( p_plugin->getVLC(), &ex ); - libvlc_exception_clear( &ex ); + libvlc_audio_toggle_mute( p_plugin->getVLC() ); } break;