84 lines
3.4 KiB
Diff
84 lines
3.4 KiB
Diff
|
From: Sebastian Ramacher <sebastian@ramacher.at>
|
||
|
Date: Fri, 6 Apr 2018 13:25:35 +0200
|
||
|
Subject: Only fetch profiles if GConf is still available
|
||
|
|
||
|
---
|
||
|
bin/soundconverter.py | 1 -
|
||
|
soundconverter/gstreamer.py | 44 ++++++++++++++++++++++++--------------------
|
||
|
2 files changed, 24 insertions(+), 21 deletions(-)
|
||
|
|
||
|
diff --git a/bin/soundconverter.py b/bin/soundconverter.py
|
||
|
index 39055ce..5198443 100644
|
||
|
--- a/bin/soundconverter.py
|
||
|
+++ b/bin/soundconverter.py
|
||
|
@@ -66,7 +66,6 @@ def _check_libs():
|
||
|
import gi
|
||
|
gi.require_version('Gst', '1.0')
|
||
|
gi.require_version('Gtk', '3.0')
|
||
|
- gi.require_version('GConf', '2.0')
|
||
|
from gi.repository import GObject
|
||
|
# force GIL creation - see https://bugzilla.gnome.org/show_bug.cgi?id=710447
|
||
|
import threading
|
||
|
diff --git a/soundconverter/gstreamer.py b/soundconverter/gstreamer.py
|
||
|
index 23aaa9b..211b052 100644
|
||
|
--- a/soundconverter/gstreamer.py
|
||
|
+++ b/soundconverter/gstreamer.py
|
||
|
@@ -25,7 +25,7 @@ from urllib.parse import urlparse
|
||
|
from gettext import gettext as _
|
||
|
|
||
|
import gi
|
||
|
-from gi.repository import Gst, Gtk, GObject, GConf, Gio
|
||
|
+from gi.repository import Gst, Gtk, GObject, Gio
|
||
|
|
||
|
from soundconverter.fileoperations import vfs_encode_filename, file_encode_filename
|
||
|
from soundconverter.fileoperations import unquote_filename, vfs_makedirs, vfs_unlink
|
||
|
@@ -66,25 +66,29 @@ _GCONF_PROFILE_LIST_PATH = "/system/gstreamer/1.0/audio/global/profile_list"
|
||
|
audio_profiles_list = []
|
||
|
audio_profiles_dict = {}
|
||
|
|
||
|
-_GCONF = GConf.Client.get_default()
|
||
|
-profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
|
||
|
-for name in profiles:
|
||
|
- if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
|
||
|
- # get profile
|
||
|
- description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
|
||
|
- extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
|
||
|
- pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
|
||
|
- # check profile validity
|
||
|
- if not extension or not pipeline:
|
||
|
- continue
|
||
|
- if not description:
|
||
|
- description = extension
|
||
|
- if description in audio_profiles_dict:
|
||
|
- continue
|
||
|
- # store
|
||
|
- profile = description, extension, pipeline
|
||
|
- audio_profiles_list.append(profile)
|
||
|
- audio_profiles_dict[description] = profile
|
||
|
+try:
|
||
|
+ from gi.repository import GConf
|
||
|
+ _GCONF = GConf.Client.get_default()
|
||
|
+ profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
|
||
|
+ for name in profiles:
|
||
|
+ if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
|
||
|
+ # get profile
|
||
|
+ description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
|
||
|
+ extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
|
||
|
+ pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
|
||
|
+ # check profile validity
|
||
|
+ if not extension or not pipeline:
|
||
|
+ continue
|
||
|
+ if not description:
|
||
|
+ description = extension
|
||
|
+ if description in audio_profiles_dict:
|
||
|
+ continue
|
||
|
+ # store
|
||
|
+ profile = description, extension, pipeline
|
||
|
+ audio_profiles_list.append(profile)
|
||
|
+ audio_profiles_dict[description] = profile
|
||
|
+except ImportError:
|
||
|
+ pass
|
||
|
|
||
|
required_elements = ('decodebin', 'fakesink', 'audioconvert', 'typefind', 'audiorate')
|
||
|
for element in required_elements:
|