STDMETHODIMP VLCPlaylist::removeItem(long item) { libvlc_instance_t* p_libvlc; HRESULT hr = getVLC(&p_libvlc); if( SUCCEEDED(hr) ) { Instance()->playlist_delete_item(item); } return hr; };
void VlcPlugin::redrawToolbar() { libvlc_exception_t ex; int is_playing = 0; bool b_mute = false; unsigned int dst_x, dst_y; GC gc; XGCValues gcv; unsigned int i_tb_width, i_tb_height; /* This method does nothing if toolbar is hidden. */ if( !b_toolbar ) return; const NPWindow& window = getWindow(); Window control = getControlWindow(); Display *p_display = ((NPSetWindowCallbackStruct *)window.ws_info)->display; getToolbarSize( &i_tb_width, &i_tb_height ); libvlc_exception_init( &ex ); /* get mute info */ b_mute = libvlc_audio_get_mute( getVLC() ); gcv.foreground = BlackPixel( p_display, 0 ); gc = XCreateGC( p_display, control, GCForeground, &gcv ); XFillRectangle( p_display, control, gc, 0, 0, window.width, i_tb_height ); gcv.foreground = WhitePixel( p_display, 0 ); XChangeGC( p_display, gc, GCForeground, &gcv ); /* position icons */ dst_x = BTN_SPACE; dst_y = i_tb_height >> 1; /* baseline = vertical middle */ if( p_btnPause && (is_playing == 1) ) { XPutImage( p_display, control, gc, p_btnPause, 0, 0, dst_x, dst_y - (p_btnPause->height >> 1), p_btnPause->width, p_btnPause->height ); dst_x += BTN_SPACE + p_btnPause->width; }
STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* item) { if( NULL == item ) return E_POINTER; if( 0 == SysStringLen(uri) ) return E_INVALIDARG; libvlc_instance_t* p_libvlc; HRESULT hr = getVLC(&p_libvlc); if( SUCCEEDED(hr) ) { char *psz_uri = NULL; if( SysStringLen(Instance()->getBaseURL()) > 0 ) { /* ** if the MRL a relative URL, we should end up with an absolute URL */ LPWSTR abs_url = CombineURL(Instance()->getBaseURL(), uri); if( NULL != abs_url ) { psz_uri = CStrFromWSTR(CP_UTF8, abs_url, wcslen(abs_url)); CoTaskMemFree(abs_url); } else { psz_uri = CStrFromBSTR(CP_UTF8, uri); } } else { /* ** baseURL is empty, assume MRL is absolute */ psz_uri = CStrFromBSTR(CP_UTF8, uri); } if( NULL == psz_uri ) { return E_OUTOFMEMORY; } int i_options; char **ppsz_options; hr = VLCControl::CreateTargetOptions(CP_UTF8, &options, &ppsz_options, &i_options); if( FAILED(hr) ) { CoTaskMemFree(psz_uri); return hr; } char *psz_name = NULL; VARIANT v_name; VariantInit(&v_name); if( SUCCEEDED(VariantChangeType(&v_name, &name, 0, VT_BSTR)) ) { if( SysStringLen(V_BSTR(&v_name)) > 0 ) psz_name = CStrFromBSTR(CP_UTF8, V_BSTR(&v_name)); VariantClear(&v_name); } *item = Instance()->playlist_add_extended_untrusted(psz_uri, i_options, const_cast<const char **>(ppsz_options)); VLCControl::FreeTargetOptions(ppsz_options, i_options); CoTaskMemFree(psz_uri); if( psz_name ) /* XXX Do we even need to check? */ CoTaskMemFree(psz_name); } return hr; };
void VlcPlugin::playlist_clear( libvlc_exception_t *ex ) { if( libvlc_media_list ) libvlc_media_list_release(libvlc_media_list); libvlc_media_list = libvlc_media_list_new(getVLC(),ex); }