public void UpdateAlbum(ClutterFlowAlbum actor) { ActiveAlbum = actor.Album; ActiveIndex = actor.Index; if (UpdatedAlbum != null) { UpdatedAlbum(ActiveAlbum, EventArgs.Empty); } }
public void Enqueue(ClutterFlowAlbum cover) { if (!cover.Enqueued) { cover.Enqueued = true; LookupQueue.Enqueue(cover); Start(); } }
// Main work loop of the class. private void Run() { if (disposed) { return; } try { Log.Debug("ArtworkLookup Run ()"); while (!Stopping) { //Log.Debug ("ArtworkLookup Run locking focusLock"); lock (focusLock) { //Log.Debug ("ArtworkLookup Run locked focusLock"); if (new_focus > -1) { LookupQueue.Focus = new_focus; } new_focus = -1; } while (!Stopping && LookupQueue != null && LookupQueue.Count == 0) { lock (SyncRoot) { //Log.Debug ("ArtworkLookup Run - waiting for pulse"); bool ret = Monitor.Wait(SyncRoot, 5000); if (!ret) { Stopping = true; } //Log.Debug ("ArtworkLookup Run - pulsed"); } } if (Stopping) { return; } ClutterFlowAlbum cover = LookupQueue.Dequeue(); float size = cover_manager.TextureSize; string cache_id = cover.PbId; Cairo.ImageSurface surface = artwork_manager.LookupScaleSurface(cache_id, (int)size); if (surface != null) { Gtk.Application.Invoke(delegate { SetCoverToSurface(cover, surface); }); } } } finally { Log.Debug("ArtworkLookup Run done"); } }
private ClutterFlowBaseActor AddActorToList(AlbumInfo generator, SortedList <AlbumInfo, ClutterFlowBaseActor> list, CoverManager cover_manager) { if (generator == null) { generator = new AlbumInfo(AlbumInfo.UnknownAlbumTitle); } string key = ClutterFlowAlbum.CreateCacheKey(generator); ClutterFlowBaseActor actor = null; if (!Cache.TryGetValue(key, out actor)) { actor = new ClutterFlowAlbum(generator, cover_manager); actor.Hide(); Cache.Add(key, actor); } actor.SortLabel = Comparer.GetSortLabel(generator); list[generator] = actor; actor.Index = list.Count; return(actor); }
public void ScrollTo(AlbumInfo album) { cover_manager.Timeline.Timeout = 500; //give 'm some time to load the song etc. ScrollTo(ClutterFlowAlbum.CreateCacheKey(album)); }
private void SetCoverToSurface(ClutterFlowAlbum cover, Cairo.ImageSurface surface) { cover.Enqueued = false; //cover.SwappedToDefault = false; ClutterFlowActor.MakeReflection(surface, cover.Cover); }