protected ContainerPlaylist(Session session, PlaylistContainer container, IntPtr playlistPtr, IntPtr folderId, sp_playlist_type type) : base(session, playlistPtr, true) { this.folderId = folderId; this.container = container; this.type = type; }
public PlaylistContainerWrapper(PlaylistContainer pc) { this.pc = pc; pc.Loaded += new PlaylistContainerHandler(pc_Loaded); pc.PlaylistAdded += new PlaylistContainerHandler <PlaylistEventArgs>(pc_PlaylistAdded); pc.PlaylistMoved += new PlaylistContainerHandler <PlaylistMovedEventArgs>(pc_PlaylistMoved); pc.PlaylistRemoved += new PlaylistContainerHandler <PlaylistEventArgs>(pc_PlaylistRemoved); }
protected override void OnDispose() { pc.Loaded -= new PlaylistContainerHandler(pc_Loaded); pc.PlaylistAdded -= new PlaylistContainerHandler <PlaylistEventArgs>(pc_PlaylistAdded); pc.PlaylistMoved -= new PlaylistContainerHandler <PlaylistMovedEventArgs>(pc_PlaylistMoved); pc.PlaylistRemoved -= new PlaylistContainerHandler <PlaylistEventArgs>(pc_PlaylistRemoved); PlaylistContainer.Delete(pc.pcPtr); pc = null; }
internal static void Delete(IntPtr pcPtr) { lock (pcsLock) { PlaylistContainer pc = pcs[pcPtr]; int count = pc.RemRef(); if (count == 0) { pcs.Remove(pcPtr); } } }
internal static IContainerPlaylist Get(Session session, PlaylistContainer container, IntPtr playlistPtr, IntPtr folderId, sp_playlist_type type) { KeyGen key = new KeyGen(playlistPtr, folderId, type); ContainerPlaylist playlist; lock (playlistsLock) { if (!playlists.ContainsKey(key)) { playlists.Add(key, new ContainerPlaylist(session, container, playlistPtr, folderId, type)); } playlist = playlists[key]; playlist.AddRef(); } return(new ContainerPlaylistWrapper(playlist)); }
private static Delegate CreateDelegate <T>(Expression <Func <PlaylistContainer, Action <T> > > expr, PlaylistContainer s) where T : EventArgs { return(expr.Compile().Invoke(s)); }