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
+
+- 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.anufrij@live.de> -->
<component type="desktop">
- <id>com.github.artemanufrij.playmyvideos.desktop</id>
+ <id>com.github.artemanufrij.playmyvideos</id>
CC0-1.0
GPL-3.0+
<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
+ * Copyright (c) 2017-2018 Artem Anufrij
*
* 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 (
- 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);