Hello community, here is the log from the commit of package cinema for openSUSE:Factory checked in at 2018-12-04 20:56:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cinema (Old) and /work/SRC/openSUSE:Factory/.cinema.new.19453 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cinema" Tue Dec 4 20:56:21 2018 rev:4 rq:653667 version:1.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/cinema/cinema.changes 2018-10-31 13:17:42.395267701 +0100 +++ /work/SRC/openSUSE:Factory/.cinema.new.19453/cinema.changes 2018-12-04 20:56:29.680708380 +0100 @@ -1,0 +2,10 @@ +Mon Nov 19 18:50:24 UTC 2018 - Alexei Podvalsky <avvi...@yandex.by> + +- Update to 1.1.2: + * fixed possible chrash on smb:// + * simplified cursor handling + * tavis + * fixed warnings and and video height +- Build with granite >= 5.1.0 + +------------------------------------------------------------------- Old: ---- playmyvideos-1.1.1.tar.gz New: ---- playmyvideos-1.1.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cinema.spec ++++++ --- /var/tmp/diff_new_pack.b2Sji4/_old 2018-12-04 20:56:30.332707662 +0100 +++ /var/tmp/diff_new_pack.b2Sji4/_new 2018-12-04 20:56:30.336707657 +0100 @@ -12,28 +12,28 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: cinema -Version: 1.1.1 +Version: 1.1.2 Release: 0 Summary: A video player for local files License: GPL-3.0-or-later Group: Productivity/Multimedia/Video/Players URL: https://artemanufrij.github.io Source: https://github.com/artemanufrij/playmyvideos/archive/%{version}.tar.gz#/playmyvideos-%{version}.tar.gz -BuildRequires: gettext-runtime >= 0.19.7 -BuildRequires: meson >= 0.40.0 BuildRequires: fdupes +BuildRequires: gettext-runtime >= 0.19.7 BuildRequires: hicolor-icon-theme +BuildRequires: meson >= 0.40.0 BuildRequires: pkgconfig BuildRequires: update-desktop-files BuildRequires: vala BuildRequires: pkgconfig(clutter-gst-3.0) BuildRequires: pkgconfig(clutter-gtk-1.0) -BuildRequires: pkgconfig(granite) +BuildRequires: pkgconfig(granite) >= 5.1.0 BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(sqlite3) ++++++ playmyvideos-1.1.1.tar.gz -> playmyvideos-1.1.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/.travis.yml new/playmyvideos-1.1.2/.travis.yml --- old/playmyvideos-1.1.1/.travis.yml 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/.travis.yml 2018-10-31 21:38:40.000000000 +0100 @@ -17,18 +17,8 @@ packages: - libstdc++-5-dev -cache: - directories: - - /tmp/liftoff - -matrix: - include: - - env: DIST=loki - - env: DIST=juno - install: - - npm install @elementaryos/houston + - npm i -g @elementaryos/houston script: - - houston ci - --distribution $DIST \ No newline at end of file + - houston ci \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/Config.vala.cmake new/playmyvideos-1.1.2/Config.vala.cmake --- old/playmyvideos-1.1.1/Config.vala.cmake 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/Config.vala.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -// -// Copyright (C) 2015-2017 Artem Anufrij -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. -// - -namespace Constants { -public const string DATADIR = "@DATADIR@"; -public const string PKGDATADIR = "@PKGDATADIR@"; -public const string GETTEXT_PACKAGE = "@GETTEXT_PACKAGE@"; -public const string RELEASE_NAME = "@RELEASE_NAME@"; -public const string VERSION = "@VERSION@"; -public const string VERSION_INFO = "@VERSION_INFO@"; -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/data/com.github.artemanufrij.playmyvideos.appdata.xml.in new/playmyvideos-1.1.2/data/com.github.artemanufrij.playmyvideos.appdata.xml.in --- old/playmyvideos-1.1.1/data/com.github.artemanufrij.playmyvideos.appdata.xml.in 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/data/com.github.artemanufrij.playmyvideos.appdata.xml.in 2018-10-31 21:38:40.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2017 Artem Anufrij <artem.anuf...@live.de> --> <component type="desktop"> - <id>com.github.artemanufrij.playmyvideos.desktop</id> + <id>com.github.artemanufrij.playmyvideos</id> <metadata_license>CC0-1.0</metadata_license> <project_license>GPL-3.0+</project_license> <name>Cinema</name> @@ -37,6 +37,14 @@ </screenshot> </screenshots> <releases> + <release version="1.1.2" date="2018-11-04"> + <description> + <p>New:</p> + <ul> + <li>Style switcher</li> + </ul> + </description> + </release> <release version="1.1.1" date="2018-10-24"> <description> <p>Fixed:</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Dialogs/Preferences.vala new/playmyvideos-1.1.2/src/Dialogs/Preferences.vala --- old/playmyvideos-1.1.1/src/Dialogs/Preferences.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Dialogs/Preferences.vala 2018-10-31 21:38:40.000000000 +0100 @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2017-2017 Artem Anufrij <artem.anuf...@live.de> + * Copyright (c) 2017-2018 Artem Anufrij <artem.anuf...@live.de> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -27,7 +27,7 @@ namespace PlayMyVideos.Dialogs { public class Preferences : Gtk.Dialog { - PlayMyVideos.Settings settings; + Settings settings; construct { settings = PlayMyVideos.Settings.get_default (); @@ -58,14 +58,6 @@ grid.row_spacing = 12; grid.margin = 12; - var use_dark_theme_label = new Gtk.Label (_("Use Dark Theme")); - use_dark_theme_label.halign = Gtk.Align.START; - var use_dark_theme = new Gtk.Switch (); - use_dark_theme.active = settings.use_dark_theme; - use_dark_theme.notify["active"].connect (() => { - settings.use_dark_theme = use_dark_theme.active; - }); - var load_content_label = new Gtk.Label (_("Load Content from The Movie DB")); load_content_label.halign = Gtk.Align.START; var load_content = new Gtk.Switch (); @@ -82,13 +74,10 @@ settings.save_custom_covers = save_custom_covers.active; }); - grid.attach (use_dark_theme_label, 0, 0); - grid.attach (use_dark_theme, 1, 0); - grid.attach (new Gtk.Separator (Gtk.Orientation.HORIZONTAL), 0, 1, 2, 1); - grid.attach (load_content_label, 0, 2); - grid.attach (load_content, 1, 2); - grid.attach (save_custom_covers_label, 0, 3); - grid.attach (save_custom_covers, 1, 3); + grid.attach (load_content_label, 0, 0); + grid.attach (load_content, 1, 0); + grid.attach (save_custom_covers_label, 0, 1); + grid.attach (save_custom_covers, 1, 1); content.pack_start (grid, false, false, 0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Interfaces/MediaKeys.vala new/playmyvideos-1.1.2/src/Interfaces/MediaKeys.vala --- old/playmyvideos-1.1.1/src/Interfaces/MediaKeys.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Interfaces/MediaKeys.vala 2018-10-31 21:38:40.000000000 +0100 @@ -28,8 +28,8 @@ namespace PlayMyVideos.Interfaces { [DBus (name = "org.gnome.SettingsDaemon.MediaKeys")] public interface GnomeMediaKeys : GLib.Object { - public abstract void GrabMediaPlayerKeys (string application, uint32 time) throws IOError; - public abstract void ReleaseMediaPlayerKeys (string application) throws IOError; + public abstract void GrabMediaPlayerKeys (string application, uint32 time) throws Error; + public abstract void ReleaseMediaPlayerKeys (string application) throws Error; public signal void MediaPlayerKeyPressed (string application, string key); } @@ -43,7 +43,7 @@ try { media_keys = Bus.get_proxy_sync (BusType.SESSION, "org.gnome.SettingsDaemon", "/org/gnome/SettingsDaemon/MediaKeys"); - } catch (IOError e) { + } catch (Error e) { warning ("Mediakeys error: %s", e.message); } @@ -52,7 +52,7 @@ try { media_keys.GrabMediaPlayerKeys (PlayMyVideos.PlayMyVideosApp.instance.application_id, (uint32)0); } - catch (IOError err) { + catch (Error err) { warning ("Could not grab media player keys: %s", err.message); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/MainWindow.vala new/playmyvideos-1.1.2/src/MainWindow.vala --- old/playmyvideos-1.1.1/src/MainWindow.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/MainWindow.vala 2018-10-31 21:38:40.000000000 +0100 @@ -49,15 +49,9 @@ construct { settings = Settings.get_default (); - settings.notify["use-dark-theme"].connect ( - () => { - Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = settings.use_dark_theme; - if (settings.use_dark_theme) { - app_menu.set_image (new Gtk.Image.from_icon_name ("open-menu-symbolic", Gtk.IconSize.LARGE_TOOLBAR)); - } else { - app_menu.set_image (new Gtk.Image.from_icon_name ("open-menu", Gtk.IconSize.LARGE_TOOLBAR)); - } - }); + settings.notify["use-dark-theme"].connect (() => { + Gtk.Settings.get_default ().gtk_application_prefer_dark_theme = settings.use_dark_theme; + }); library_manager = PlayMyVideos.Services.LibraryManager.instance; library_manager.added_new_box.connect ( @@ -127,60 +121,55 @@ load_settings (); build_ui (); - load_content_from_database.begin ( - (obj, res) => { - library_manager.sync_library_content.begin (); - visible_playing_button (); - }); - this.motion_notify_event.connect ( - (event) => { - show_mouse_cursor (); - return false; - }); - this.window_state_event.connect ( - (event) => { - current_state = event.new_window_state; - return false; - }); - this.delete_event.connect ( - () => { - save_settings (); - player_view.reset (); - return false; - }); - this.key_press_event.connect ( - (key) => { - if (content.visible_child_name == "player") { - switch (key.keyval) { - case Gdk.Key.Left : - if (Gdk.ModifierType.MOD1_MASK in key.state) { - break; - } - if (Gdk.ModifierType.SHIFT_MASK in key.state) { - seek_seconds (-300); - } else { - seek_seconds (-10); - } - return true; - case Gdk.Key.Right : - if (Gdk.ModifierType.MOD1_MASK in key.state) { - break; - } - if (Gdk.ModifierType.SHIFT_MASK in key.state) { - seek_seconds (300); - } else { - seek_seconds (10); - } - return true; - case Gdk.Key.space : - toggle_playing (); - return true; + load_content_from_database.begin ((obj, res) => { + library_manager.sync_library_content.begin (); + visible_playing_button (); + }); + this.motion_notify_event.connect ((event) => { + show_mouse_cursor (); + return false; + }); + this.window_state_event.connect ((event) => { + current_state = event.new_window_state; + return false; + }); + this.delete_event.connect (() => { + save_settings (); + player_view.reset (); + return false; + }); + this.key_press_event.connect ((key) => { + if (content.visible_child_name == "player") { + switch (key.keyval) { + case Gdk.Key.Left : + if (Gdk.ModifierType.MOD1_MASK in key.state) { + break; + } + if (Gdk.ModifierType.SHIFT_MASK in key.state) { + seek_seconds (-300); + } else { + seek_seconds (-10); + } + return true; + case Gdk.Key.Right : + if (Gdk.ModifierType.MOD1_MASK in key.state) { + break; + } + if (Gdk.ModifierType.SHIFT_MASK in key.state) { + seek_seconds (300); + } else { + seek_seconds (10); } - } else if (!search_entry.is_focus && key.str.strip ().length > 0) { - search_entry.grab_focus (); + return true; + case Gdk.Key.space : + toggle_playing (); + return true; } - return false; - }); + } else if (!search_entry.is_focus && key.str.strip ().length > 0) { + search_entry.grab_focus (); + } + return false; + }); } private void build_ui () { @@ -189,61 +178,130 @@ headerbar = new Gtk.HeaderBar (); headerbar.show_close_button = true; - headerbar.get_style_context ().add_class ("default-decoration"); headerbar.title = _ ("Cinema"); + header_build_play_button (); + + header_build_app_menu (); + + header_build_style_switcher (); + + header_build_search_entry (); + + // SPINNER + spinner = new Gtk.Spinner (); + headerbar.pack_end (spinner); + + header_build_back_button (); + + this.set_titlebar (headerbar); + + boxes_view = new Widgets.Views.BoxesView (); + boxes_view.video_selected.connect (show_player); + boxes_view.box_removed.connect ((current_count) => { + if (current_count == 0) { + Idle.add (() => { + if (content.visible_child_name != "welcome") { + content.visible_child_name = "welcome"; + } + return false; + }); + } + }); + + player_view = new Widgets.Views.PlayerView (); + player_view.ended.connect (() => { + settings.last_played_video_uri = ""; + settings.last_played_video_progress = 0; + show_boxes (); + }); + player_view.started.connect ((video) => { + headerbar.title = video.title; + play_button.visible = false; + }); + player_view.player_frame_resized.connect ((width, height) => { + if (width < 0 || height < 0) { + return; + } + var current_width = this.get_allocated_width (); + double w_r = (double)(current_width - 156) / width; + int new_height = (int)(height * w_r) + 193; + if (current_width <= 0 || new_height <=0) { + return; + } + this.get_window ().resize (current_width, new_height); + }); + + var welcome = new Widgets.Views.Welcome (); + + content.add_named (welcome, "welcome"); + content.add_named (boxes_view, "boxes"); + content.add_named (player_view, "player"); + this.add (content); + this.show_all (); + navigation_button.hide (); + } + + private void header_build_play_button () { play_button = new Gtk.Button.from_icon_name ("media-playback-start-symbolic", Gtk.IconSize.LARGE_TOOLBAR); play_button.valign = Gtk.Align.CENTER; play_button.tooltip_text = _ ("Resume playing"); - play_button.clicked.connect ( - () => { - toggle_playing (); - }); + play_button.clicked.connect (() => { + toggle_playing (); + }); headerbar.pack_start (play_button); + } + + private void header_build_back_button () { + navigation_button = new Gtk.Button (); + navigation_button.label = _ ("Back"); + navigation_button.valign = Gtk.Align.CENTER; + navigation_button.can_focus = false; + navigation_button.get_style_context ().add_class ("back-button"); + navigation_button.clicked.connect (() => { + settings.last_played_video_progress = player_view.playback.progress; + show_boxes (); + player_view.clear_last_size (); + }); - //SETTINGS MENU + headerbar.pack_start (navigation_button); + } + + private void header_build_app_menu () { app_menu = new Gtk.MenuButton (); - if (settings.use_dark_theme) { - app_menu.set_image (new Gtk.Image.from_icon_name ("open-menu-symbolic", Gtk.IconSize.LARGE_TOOLBAR)); - } else { - app_menu.set_image (new Gtk.Image.from_icon_name ("open-menu", Gtk.IconSize.LARGE_TOOLBAR)); - } + app_menu.set_image (new Gtk.Image.from_icon_name ("open-menu-symbolic", Gtk.IconSize.LARGE_TOOLBAR)); var settings_menu = new Gtk.Menu (); var menu_item_library = new Gtk.MenuItem.with_label (_ ("Change Video Folder…")); - menu_item_library.activate.connect ( - () => { - var folder = library_manager.choose_folder (); - if (folder != null) { - settings.library_location = folder; - library_manager.scan_local_library_for_new_files (folder); - } - }); + menu_item_library.activate.connect (() => { + var folder = library_manager.choose_folder (); + if (folder != null) { + settings.library_location = folder; + library_manager.scan_local_library_for_new_files (folder); + } + }); var menu_item_import = new Gtk.MenuItem.with_label (_ ("Import Videos…")); - menu_item_import.activate.connect ( - () => { - var folder = library_manager.choose_folder (); - if (folder != null) { - library_manager.scan_local_library_for_new_files (folder); - } - }); + menu_item_import.activate.connect (() => { + var folder = library_manager.choose_folder (); + if (folder != null) { + library_manager.scan_local_library_for_new_files (folder); + } + }); menu_item_rescan = new Gtk.MenuItem.with_label (_ ("Rescan Library")); - menu_item_rescan.activate.connect ( - () => { - reset_all_views (); - library_manager.rescan_library (); - }); + menu_item_rescan.activate.connect (() => { + reset_all_views (); + library_manager.rescan_library (); + }); var menu_item_preferences = new Gtk.MenuItem.with_label (_ ("Preferences")); - menu_item_preferences.activate.connect ( - () => { - var preferences = new Dialogs.Preferences (this); - preferences.run (); - }); + menu_item_preferences.activate.connect (() => { + var preferences = new Dialogs.Preferences (this); + preferences.run (); + }); settings_menu.append (menu_item_library); settings_menu.append (menu_item_import); @@ -255,73 +313,26 @@ app_menu.popup = settings_menu; headerbar.pack_end (app_menu); + } + + private void header_build_style_switcher () { + var mode_switch = new Granite.ModeSwitch.from_icon_name ("display-brightness-symbolic", "weather-clear-night-symbolic"); + mode_switch.valign = Gtk.Align.CENTER; + mode_switch.active = settings.use_dark_theme; + mode_switch.notify["active"].connect (() => { + settings.use_dark_theme = mode_switch.active; + }); + headerbar.pack_end (mode_switch); + } + private void header_build_search_entry () { search_entry = new Gtk.SearchEntry (); search_entry.placeholder_text = _ ("Search Videos"); search_entry.valign = Gtk.Align.CENTER; - search_entry.search_changed.connect ( - () => { - boxes_view.filter = search_entry.text; - }); + search_entry.search_changed.connect (() => { + boxes_view.filter = search_entry.text; + }); headerbar.pack_end (search_entry); - - // SPINNER - spinner = new Gtk.Spinner (); - headerbar.pack_end (spinner); - - navigation_button = new Gtk.Button (); - navigation_button.label = _ ("Back"); - navigation_button.valign = Gtk.Align.CENTER; - navigation_button.can_focus = false; - navigation_button.get_style_context ().add_class ("back-button"); - navigation_button.clicked.connect ( - () => { - settings.last_played_video_progress = player_view.playback.progress; - show_boxes (); - player_view.clear_last_size (); - }); - - headerbar.pack_start (navigation_button); - - this.set_titlebar (headerbar); - - boxes_view = new Widgets.Views.BoxesView (); - boxes_view.video_selected.connect (show_player); - - player_view = new Widgets.Views.PlayerView (); - player_view.ended.connect ( - () => { - settings.last_played_video_uri = ""; - settings.last_played_video_progress = 0; - show_boxes (); - }); - player_view.started.connect ( - (video) => { - headerbar.title = video.title; - play_button.visible = false; - }); - player_view.player_frame_resized.connect ( - (width, height) => { - if (width < 0 || height < 0) { - return; - } - var current_width = this.get_allocated_width (); - double w_r = (double)(current_width - 156) / width; - int new_height = (int)(height * w_r) + 206; - if (current_width <= 0 || new_height <=0) { - return; - } - this.get_window ().resize (current_width, new_height); - }); - - var welcome = new Widgets.Views.Welcome (); - - content.add_named (welcome, "welcome"); - content.add_named (boxes_view, "boxes"); - content.add_named (player_view, "player"); - this.add (content); - this.show_all (); - navigation_button.hide (); } private void visible_playing_button () { @@ -480,8 +491,7 @@ } public void hide_mouse_cursor () { - var display = this.get_window ().get_display (); - var cursor = new Gdk.Cursor.for_display (display, Gdk.CursorType.BLANK_CURSOR); + var cursor = new Gdk.Cursor.from_name (Gdk.Display.get_default (), "none"); this.get_window ().set_cursor (cursor); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Objects/Box.vala new/playmyvideos-1.1.2/src/Objects/Box.vala --- old/playmyvideos-1.1.1/src/Objects/Box.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Objects/Box.vala 2018-10-31 21:38:40.000000000 +0100 @@ -80,17 +80,15 @@ settings = Settings.get_default (); library_manager = Services.LibraryManager.instance; db_manager = library_manager.db_manager; - video_removed.connect ( - (video) => { - this._videos.remove (video); - if (this.videos.length () == 0) { - db_manager.remove_box (this); - } - }); - removed.connect ( - () => { - FileUtils.remove (cover_path); - }); + video_removed.connect ((video) => { + this._videos.remove (video); + if (this.videos.length () == 0) { + db_manager.remove_box (this); + } + }); + removed.connect (() => { + FileUtils.remove (cover_path); + }); } public Box (string title = "") { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Services/LibraryManager.vala new/playmyvideos-1.1.2/src/Services/LibraryManager.vala --- old/playmyvideos-1.1.1/src/Services/LibraryManager.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Services/LibraryManager.vala 2018-10-31 21:38:40.000000000 +0100 @@ -98,7 +98,7 @@ // LOCAL FILES REGION public async void sync_library_content () { new Thread <void*> ( - null, + "sync_library_content", () => { remove_non_existent_items (); scan_local_library_for_new_files (settings.library_location); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Services/LocalFilesManager.vala new/playmyvideos-1.1.2/src/Services/LocalFilesManager.vala --- old/playmyvideos-1.1.1/src/Services/LocalFilesManager.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Services/LocalFilesManager.vala 2018-10-31 21:38:40.000000000 +0100 @@ -66,6 +66,10 @@ scan_local_files (target); } } else if (file_info.get_file_type () == FileType.DIRECTORY) { + // Without usleep it crashes on smb:// protocol + if (!directory.get_uri ().has_prefix ("file://")) { + Thread.usleep (1000000); + } scan_local_files (GLib.Path.build_filename (path, file_info.get_name ())); } else { string mime_type = file_info.get_content_type (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Widgets/Box.vala new/playmyvideos-1.1.2/src/Widgets/Box.vala --- old/playmyvideos-1.1.1/src/Widgets/Box.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Widgets/Box.vala 2018-10-31 21:38:40.000000000 +0100 @@ -31,6 +31,7 @@ PlayMyVideos.Settings settings; public signal void video_selected (Objects.Video video); + public signal void removed (); public Objects.Box box { get; private set; } public string title { get { return box.title; } } @@ -59,7 +60,7 @@ }); this.box.removed.connect (() => { Idle.add (() => { - this.destroy (); + removed (); return false; }); }); @@ -147,7 +148,7 @@ private bool show_context_menu (Gtk.Widget sender, Gdk.EventButton evt) { if (evt.type == Gdk.EventType.BUTTON_PRESS && evt.button == 3) { - menu.popup (null, null, null, evt.button, evt.time); + menu.popup_at_pointer (null); return true; } return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Widgets/Video.vala new/playmyvideos-1.1.2/src/Widgets/Video.vala --- old/playmyvideos-1.1.1/src/Widgets/Video.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Widgets/Video.vala 2018-10-31 21:38:40.000000000 +0100 @@ -34,7 +34,6 @@ Gtk.Image thumbnail; public Video (Objects.Video video) { - this.video = video; this.video.thumbnail_normal_changed.connect (() => { thumbnail.pixbuf = video.thumbnail_normal; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Widgets/Views/BoxView.vala new/playmyvideos-1.1.2/src/Widgets/Views/BoxView.vala --- old/playmyvideos-1.1.1/src/Widgets/Views/BoxView.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Widgets/Views/BoxView.vala 2018-10-31 21:38:40.000000000 +0100 @@ -116,7 +116,10 @@ } private void current_box_removed () { - box_removed (); + Idle.add (() => { + box_removed (); + return false; + }); } private void change_cover () { @@ -149,7 +152,7 @@ private bool show_context_menu (Gtk.Widget sender, Gdk.EventButton evt) { if (evt.type == Gdk.EventType.BUTTON_PRESS && evt.button == 3) { - menu.popup (null, null, null, evt.button, evt.time); + menu.popup_at_pointer (null); return true; } return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Widgets/Views/BoxesView.vala new/playmyvideos-1.1.2/src/Widgets/Views/BoxesView.vala --- old/playmyvideos-1.1.1/src/Widgets/Views/BoxesView.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Widgets/Views/BoxesView.vala 2018-10-31 21:38:40.000000000 +0100 @@ -30,6 +30,7 @@ Services.LibraryManager library_manager; public signal void video_selected (Objects.Video video); + public signal void box_removed (uint current_count); Gtk.FlowBox boxes; Gtk.Revealer action_revealer; @@ -60,14 +61,12 @@ construct { library_manager = Services.LibraryManager.instance; - library_manager.added_new_box.connect ( - (box) => { - Idle.add ( - () => { - add_box (box); - return false; - }); + library_manager.added_new_box.connect ((box) => { + Idle.add (() => { + add_box (box); + return false; }); + }); } public BoxesView () { @@ -113,10 +112,15 @@ public void add_box (Objects.Box box) { var b = new Widgets.Box (box); - b.video_selected.connect ( - (video) => { - video_selected (video); - }); + b.removed.connect (() => { + lock (boxes) { + b.destroy (); + box_removed (boxes.get_children().length ()); + } + }); + b.video_selected.connect ((video) => { + video_selected (video); + }); lock (boxes) { boxes.add (b); } @@ -124,20 +128,20 @@ } private void do_sort () { - if (timer_sort != 0) { - Source.remove (timer_sort); - timer_sort = 0; - } + lock (timer_sort) { + if (timer_sort != 0) { + Source.remove (timer_sort); + timer_sort = 0; + } - timer_sort = Timeout.add ( - 500, - () => { + timer_sort = Timeout.add (500, () => { boxes.set_sort_func (boxes_sort_func); boxes.set_sort_func (null); Source.remove (timer_sort); timer_sort = 0; return false; }); + } } private void do_search () { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playmyvideos-1.1.1/src/Widgets/Views/PlayerView.vala new/playmyvideos-1.1.2/src/Widgets/Views/PlayerView.vala --- old/playmyvideos-1.1.1/src/Widgets/Views/PlayerView.vala 2018-10-20 12:50:37.000000000 +0200 +++ new/playmyvideos-1.1.2/src/Widgets/Views/PlayerView.vala 2018-10-31 21:38:40.000000000 +0100 @@ -182,6 +182,7 @@ } return; } + pause (); current_video = video; if (current_video.box != null) { playlist.show_box (current_video.box);