Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-08-11 23:29:55 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-08-11 23:29:55 (GMT)
commitfc1aefc72c35b830ae36e5f29fce31947eb70dd7 (patch)
tree3752aee2f4534d2ff31188d6cd0f12e2ae61b53b
parentc5fb39875c9a6609868ef7295193840df183a6f4 (diff)
Use dbus-launch with the --exit-with-session. dbus not exiting still not fully solved.
-rw-r--r--shell/PresenceService/PresenceService.py9
-rw-r--r--shell/session/Session.py8
-rwxr-xr-xshell/sugar-presence-service8
-rw-r--r--sugar/activity/Activity.py14
4 files changed, 21 insertions, 18 deletions
diff --git a/shell/PresenceService/PresenceService.py b/shell/PresenceService/PresenceService.py
index e1851ab..997340a 100644
--- a/shell/PresenceService/PresenceService.py
+++ b/shell/PresenceService/PresenceService.py
@@ -212,7 +212,7 @@ class PresenceServiceDBusHelper(dbus.service.Object):
in_signature="o", out_signature="")
def unregisterService(self, service_op):
found_serv = None
- serv = self._parent.get_services()
+ services = self._parent.get_services()
for serv in services:
if serv.object_path() == service_op:
found_serv = serv
@@ -688,12 +688,13 @@ class PresenceService(object):
if stype in self._registered_service_types:
self._registered_service_types.remove(stype)
-
-
def main():
loop = gobject.MainLoop()
ps = PresenceService()
- loop.run()
+ try:
+ loop.run()
+ except KeyboardInterrupt:
+ print 'Ctrl+C pressed, exiting...'
if __name__ == "__main__":
main()
diff --git a/shell/session/Session.py b/shell/session/Session.py
index 8131c1d..aac6576 100644
--- a/shell/session/Session.py
+++ b/shell/session/Session.py
@@ -2,6 +2,8 @@ import os
import gtk
import gobject
import time
+import re
+
import dbus
import dbus.dbus_bindings
@@ -13,7 +15,7 @@ import sugar.env
class DbusProcess(Process):
def __init__(self):
config = sugar.env.get_dbus_config()
- cmd = "dbus-daemon --print-address --config-file %s" % config
+ cmd = "dbus-launch --exit-with-session --config-file %s" % config
Process.__init__(self, cmd)
def get_name(self):
@@ -22,8 +24,8 @@ class DbusProcess(Process):
def start(self):
Process.start(self, True)
dbus_file = os.fdopen(self._stdout)
- addr = dbus_file.readline()
- addr = addr.strip()
+ regexp = re.compile('DBUS_SESSION_BUS_ADDRESS=\'(.*)\'\;')
+ addr = regexp.match(dbus_file.readline()).group(1)
dbus_file.close()
os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr
diff --git a/shell/sugar-presence-service b/shell/sugar-presence-service
index 4b939c4..fda0d12 100755
--- a/shell/sugar-presence-service
+++ b/shell/sugar-presence-service
@@ -1,14 +1,10 @@
#!/usr/bin/python
import logging
-import sugar.env
from PresenceService import PresenceService
+import sugar.logger
-# FIXME this looks like duplicated
-level = sugar.env.get_logging_level()
-if level == 'debug':
- logging.basicConfig(level=logging.DEBUG,
- format='%(levelname)s %(message)s')
+sugar.logger.start('PresenceService')
logging.info('Starting presence service')
diff --git a/sugar/activity/Activity.py b/sugar/activity/Activity.py
index 13077ea..36678aa 100644
--- a/sugar/activity/Activity.py
+++ b/sugar/activity/Activity.py
@@ -72,6 +72,8 @@ class Activity(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
+ self.connect('destroy', self.__destroy_cb)
+
self._shared = False
self._activity_id = None
self._default_type = None
@@ -89,11 +91,6 @@ class Activity(gtk.Window):
self._bus = ActivityDbusService(bus_name, get_object_path(xid))
self._bus.start(self._pservice, self)
- def __del__(self):
- if self._bus:
- del self._bus
- self._bus = None
-
def set_default_type(self, default_type):
"""Set the activity default type.
@@ -145,3 +142,10 @@ class Activity(gtk.Window):
def execute(self, command, args):
"""Execute the given command with args"""
pass
+
+ def __destroy_cb(self, window):
+ if self._bus:
+ del self._bus
+ self._bus = None
+ if self._service:
+ self._pservice.unregister_service(self._service)