Get rid of GObjectEventThread

This commit is contained in:
Thomas Adamcik 2011-06-22 03:00:30 +02:00
parent 54f09b0157
commit 14a7a9bd80
2 changed files with 7 additions and 34 deletions

View File

@ -2,7 +2,9 @@ import logging
import optparse
import signal
import sys
import time
import gobject
gobject.threads_init()
# Extract any non-GStreamer arguments, and leave the GStreamer arguments for
# processing by GStreamer. This needs to be done before GStreamer is imported,
@ -23,25 +25,23 @@ from mopidy.gstreamer import GStreamer
from mopidy.utils import get_class
from mopidy.utils.log import setup_logging
from mopidy.utils.path import get_or_create_folder, get_or_create_file
from mopidy.utils.process import (GObjectEventThread, exit_handler,
stop_all_actors)
from mopidy.utils.process import exit_handler, stop_all_actors
from mopidy.utils.settings import list_settings_optparse_callback
logger = logging.getLogger('mopidy.core')
def main():
signal.signal(signal.SIGTERM, exit_handler)
loop = gobject.MainLoop()
try:
options = parse_options()
setup_logging(options.verbosity_level, options.save_debug_log)
setup_settings(options.interactive)
setup_gobject_loop()
setup_gstreamer()
setup_mixer()
setup_backend()
setup_frontends()
while True:
time.sleep(1)
loop.run()
except SettingsError as e:
logger.error(e.message)
except KeyboardInterrupt:
@ -49,6 +49,7 @@ def main():
except Exception as e:
logger.exception(e)
finally:
loop.quit()
stop_all_actors()
def parse_options():
@ -82,9 +83,6 @@ def setup_settings(interactive):
logger.error(e.message)
sys.exit(1)
def setup_gobject_loop():
GObjectEventThread().start()
def setup_gstreamer():
GStreamer.start()

View File

@ -3,9 +3,6 @@ import signal
import thread
import threading
import gobject
gobject.threads_init()
from pykka import ActorDeadError
from pykka.registry import ActorRegistry
@ -60,25 +57,3 @@ class BaseThread(threading.Thread):
def run_inside_try(self):
raise NotImplementedError
class GObjectEventThread(BaseThread):
"""
A GObject event loop which is shared by all Mopidy components that uses
libraries that need a GObject event loop, like GStreamer and D-Bus.
Should be started by Mopidy's core and used by
:mod:`mopidy.output.gstreamer`, :mod:`mopidy.frontend.mpris`, etc.
"""
def __init__(self):
super(GObjectEventThread, self).__init__()
self.name = u'GObjectEventThread'
self.loop = None
def run_inside_try(self):
self.loop = gobject.MainLoop().run()
def destroy(self):
self.loop.quit()
super(GObjectEventThread, self).destroy()