diff -u screenlets-0.0.12/debian/changelog screenlets-0.0.12/debian/changelog --- screenlets-0.0.12/debian/changelog +++ screenlets-0.0.12/debian/changelog @@ -1,3 +1,27 @@ +screenlets (0.0.12-0ubuntu4) hardy; urgency=low + + * This is a bugfix upload. (LP: #213385) + * debian/patches/10-problem-on-create-tmpfile.patch: dropped, didn't fix the + issue + * new patches from upstream: + - debian/patches/15_better-daemon-running-check.patch: fix daemon starting + multiple times (LP: #205526) + - debian/patches/16_fix-option-theme-dialog-crashing.patch: fix a crash + occuring in some theme dialogues (LP: #195036) + - debian/patches/17_fix-crash-on-invalid-archive.patch: fix a crash + occuring when trying to open broken screenlet packages (LP: #205526) + * new patches from ubuntu: + - debian/patches/14_no-unnecessary-updates-when-unmapped.patch: don't + update the screenlets when they are not mapped, thanks criser + (LP: #211525) + - debian/patches/18_fix-crashing-on-invalid-sensor-type.patch: fix a crash + occuring in the sensor applet when a bad device was selected for + monitoring (LP: #198675) + - debian/patches/19_fix-creating-tempfile.patch: improve the error + handling when initializing the tempfile (LP: #197712, #212175) + + -- Kjell Braden Mon, 07 Apr 2008 17:05:29 +0200 + screenlets (0.0.12-0ubuntu3) hardy; urgency=low * debian/patches/12_fix-SIGTERM-handler.patch: don't crash on SIGTERM reverted: --- screenlets-0.0.12/debian/patches/10-problem-on-create-tmpfile.patch +++ screenlets-0.0.12.orig/debian/patches/10-problem-on-create-tmpfile.patch @@ -1,13 +0,0 @@ -diff -ur screenlets.orig/src/share/screenlets-manager/screenlets-manager.py screenlets/src/share/screenlets-manager/screenlets-manager.py ---- screenlets.orig/src/share/screenlets-manager/screenlets-manager.py 2008-02-08 03:46:23.000000000 +0100 -+++ screenlets/src/share/screenlets-manager/screenlets-manager.py 2008-03-04 01:20:06.000000000 +0100 -@@ -394,7 +394,7 @@ - code.append('Encoding=UTF-8') - code.append('Version=1.0') - code.append('Type=Application') -- code.append('Exec= python %s/%sScreenlet.py > /dev/null' % (path, name)) -+ code.append('Exec= python -u %s/%sScreenlet.py' % (path, name)) - code.append('X-GNOME-Autostart-enabled=true') - #print code - f = open(starter, 'w') -Seulement dans screenlets/src/share/screenlets-manager: screenlets-manager.py~ only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/16_fix-option-theme-dialog-crashing.patch +++ screenlets-0.0.12/debian/patches/16_fix-option-theme-dialog-crashing.patch @@ -0,0 +1,14 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/lib/options.py screenlets-0.0.12.new/src/lib/options.py +--- screenlets-0.0.12/src/lib/options.py 2008-02-08 03:46:21.000000000 +0100 ++++ screenlets-0.0.12.new/src/lib/options.py 2008-04-06 19:31:53.000000000 +0200 +@@ -884,6 +884,10 @@ + mu = '' + name_uc + \ + ' (no info available)' + else: ++ if attrib[1] == None : attrib[1] = '-' ++ if attrib[2] == None : attrib[2] = '-' ++ if attrib[3] == None : attrib[3] = '-' ++ if attrib[4] == None : attrib[4] = '-' + mu = '' + name_uc + \ + ' v' + attrib[4] + '\n' + attrib[2].replace('\\n', '\n') + \ only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/17_fix-crash-on-invalid-archive.patch +++ screenlets-0.0.12/debian/patches/17_fix-crash-on-invalid-archive.patch @@ -0,0 +1,25 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/share/screenlets-manager/screenlets-manager.py screenlets-0.0.12.new/src/share/screenlets-manager/screenlets-manager.py +--- screenlets-0.0.12/src/share/screenlets-manager/screenlets-manager.py 2008-04-06 19:34:07.000000000 +0200 ++++ screenlets-0.0.12.new/src/share/screenlets-manager/screenlets-manager.py 2008-04-06 19:35:41.000000000 +0200 +@@ -155,9 +155,9 @@ + name = f + try: + print name ++ return (name, ext) + except: +- screenlets.show_message(None,"Archive damaged or unsuported, only tar , bz2 or gz.") +- return (name, ext) ++ return False + + def get_result_message (self): + """Return a human-readable result message about the last operation.""" +@@ -180,6 +180,9 @@ + #name = basename[:basename.find('.')] + #print name + info = self.get_info_from_package_name(filename) ++ if info == False: ++ self._message= _("Archive is damaged or unsupported, use only tar, bz2 or gz.") ++ return False + name = info[0] + ext = info[1] + only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/14_no-unnecessary-updates-when-unmapped.patch +++ screenlets-0.0.12/debian/patches/14_no-unnecessary-updates-when-unmapped.patch @@ -0,0 +1,103 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/lib/__init__.py screenlets-0.0.12.new/src/lib/__init__.py +--- screenlets-0.0.12/src/lib/__init__.py 2008-02-08 03:46:21.000000000 +0100 ++++ screenlets-0.0.12.new/src/lib/__init__.py 2008-04-06 19:24:31.000000000 +0200 +@@ -636,6 +636,8 @@ + self.window.connect("focus-out-event", self.focus_out_event) + self.window.connect("scroll-event", self.scroll_event) + self.window.connect("motion-notify-event",self.motion_notify_event) ++ self.window.connect("map-event", self.map_event) ++ self.window.connect("unmap-event", self.unmap_event) + # add key-handlers (TODO: use keyword-attrib to activate?) + self.window.connect("key-press-event", self.key_press) + # drag/drop support (NOTE: still experimental and incomplete) +@@ -1189,6 +1191,14 @@ + your own icon and mask by returning them as a 2-tuple.""" + return (None, None) + ++ def on_map(self): ++ """Called when screenlet was mapped""" ++ pass ++ ++ def on_unmap(self): ++ """Called when screenlet was unmapped""" ++ pass ++ + def on_composite_changed(self): + """Called when composite state has changed""" + pass +@@ -1537,6 +1547,12 @@ + self.on_menuitem_select(id) + return False + ++ def map_event(self, widget, event): ++ self.on_map() ++ ++ def unmap_event(self, widget, event): ++ self.on_unmap() ++ + def motion_notify_event(self, widget, event): + self.mousex = event.x / self.scale + self.mousey = event.y / self.scale +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/share/screenlets/ClearCalendar/ClearCalendarScreenlet.py screenlets-0.0.12.new/src/share/screenlets/ClearCalendar/ClearCalendarScreenlet.py +--- screenlets-0.0.12/src/share/screenlets/ClearCalendar/ClearCalendarScreenlet.py 2008-02-08 03:46:21.000000000 +0100 ++++ screenlets-0.0.12.new/src/share/screenlets/ClearCalendar/ClearCalendarScreenlet.py 2008-04-06 19:24:26.000000000 +0200 +@@ -109,6 +109,7 @@ + = self.__day_names.index(self.first_weekday) + self.update() + elif name == 'enable_buttons': ++ self.__dict__['enable_buttons'] = value + if value == True and not self.__buttons_timeout: + self.__buttons_timeout = gobject.timeout_add(100, + self.update_buttons) +@@ -163,6 +164,23 @@ + + # return as array + return [day, year, month_name, days_in_month, start_day,month_num] ++ ++ def on_map(self): ++ if not self.__timeout: ++ self.__timeout = gobject.timeout_add(self.__dict__['update_interval'] ++ * 1000, self.update) ++ if self.__dict__['enable_buttons'] == True and not self.__buttons_timeout: ++ self.__buttons_timeout = gobject.timeout_add(100, ++ self.update_buttons) ++ ++ def on_unmap(self): ++ if self.__timeout: ++ gobject.source_remove(self.__timeout) ++ self.__timeout = None ++ if self.__buttons_timeout: ++ gobject.source_remove(self.__buttons_timeout) ++ self.__buttons_timeout = None ++ + + # timeout-functions + def update(self): +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/share/screenlets/Sysmonitor/SysmonitorScreenlet.py screenlets-0.0.12.new/src/share/screenlets/Sysmonitor/SysmonitorScreenlet.py +--- screenlets-0.0.12/src/share/screenlets/Sysmonitor/SysmonitorScreenlet.py 2008-02-08 03:46:22.000000000 +0100 ++++ screenlets-0.0.12.new/src/share/screenlets/Sysmonitor/SysmonitorScreenlet.py 2008-04-06 19:24:26.000000000 +0200 +@@ -112,7 +112,7 @@ + + + # ADD a 1 second (1000) TIMER +- self.timer = gobject.timeout_add( 1000, self.update) ++ self.timer = None + + #Also add options from xml file for example porpuse + +@@ -174,6 +174,15 @@ + self.redraw_canvas() + return True # keep running this event + ++ def on_map(self): ++ if not self.timer: ++ self.timer = gobject.timeout_add( 1000, self.update) ++ self.update() ++ ++ def on_unmap(self): ++ if self.timer: ++ gobject.source_remove(self.timer) ++ self.timer = None + + def on_drop (self, x, y, sel_data, timestamp): + """Called when a selection is dropped on this Screenlet.""" only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/18_fix-crashing-on-invalid-sensor-type.patch +++ screenlets-0.0.12/debian/patches/18_fix-crashing-on-invalid-sensor-type.patch @@ -0,0 +1,19 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/share/screenlets/Sensors/SensorsScreenlet.py screenlets-0.0.12.new/src/share/screenlets/Sensors/SensorsScreenlet.py +--- screenlets-0.0.12/src/share/screenlets/Sensors/SensorsScreenlet.py 2008-02-08 03:46:22.000000000 +0100 ++++ screenlets-0.0.12.new/src/share/screenlets/Sensors/SensorsScreenlet.py 2008-04-06 21:11:25.000000000 +0200 +@@ -192,11 +192,11 @@ + else: + self.sensor = 'Wifi ' + str(self.wire_data['essid']) + self.load = int(str(self.wire_data['percentage']).replace('%','')) ++ elif self.sensor and self.sensor in sensors.disk_get_disk_list(): ++ # only get here when requested sensor is in the list of available disks ++ self.load = int(sensors.disk_get_usage(self.sensor)[4].replace('%','')) + else: +- +- if self.sensor != None: +- self.load = int(sensors.disk_get_usage(self.sensor)[4].replace('%','')) +- ++ self.load = 0 + + + if self.load > 100: only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/15_better-daemon-running-check.patch +++ screenlets-0.0.12/debian/patches/15_better-daemon-running-check.patch @@ -0,0 +1,30 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/share/screenlets-manager/screenlets-daemon.py screenlets-0.0.12.new/src/share/screenlets-manager/screenlets-daemon.py +--- screenlets-0.0.12/src/share/screenlets-manager/screenlets-daemon.py 2008-02-08 03:46:23.000000000 +0100 ++++ screenlets-0.0.12.new/src/share/screenlets-manager/screenlets-daemon.py 2008-04-06 22:39:14.000000000 +0200 +@@ -373,16 +373,19 @@ + + if __name__ == '__main__': + # check for running daemon +- """import os +- proc = os.popen("ps axo \"%p,%a\" | grep \"screenlets-daemon.py\" | grep -v grep|cut -d',' -f1").read() ++ import os ++ proc = os.popen("""ps axo "%p,%a" | grep "screenlets-daemon.py" | grep -v grep|cut -d',' -f1""").read() ++ print proc + procs = proc.split('\n') + if len(procs) > 2: +- pid = int(procs[0].strip()) +- os.kill(pid, 0) ++ print "daemon already started" ++ import sys ++ sys.exit(1) + else: +- print "no daemon" +- import sys +- sys.exit(1)""" ++ print "no daemon yet" ++ ++ ++ + # create new daemon + daemon = ScreenletsDaemon() + print _('ScreenletsDaemon running ...') only in patch2: unchanged: --- screenlets-0.0.12.orig/debian/patches/19_fix-creating-tempfile.patch +++ screenlets-0.0.12/debian/patches/19_fix-creating-tempfile.patch @@ -0,0 +1,76 @@ +diff -Nur -x '*.orig' -x '*~' screenlets-0.0.12/src/lib/session.py screenlets-0.0.12.new/src/lib/session.py +--- screenlets-0.0.12/src/lib/session.py 2008-04-07 16:33:41.000000000 +0200 ++++ screenlets-0.0.12.new/src/lib/session.py 2008-04-07 16:35:07.000000000 +0200 +@@ -262,39 +262,54 @@ + def __register_screenlet (self): + """Create new entry for this session in the global TMP_FILE.""" + # if tempfile not exists, create it +- if not os.path.isfile(self.tempfile) and not self.__create_tempfile(): +- print _('Error: Unable to create temp entry - screenlets-manager will not work properly.') ++ if not self.__create_tempdir(): + return False ++ ++ # if screenlet not already added ++ running = utils.list_running_screenlets() ++ if running == None: running = [] ++ if running.count(self.screenlet.__name__) == 0: + # open temp file for appending data +- f = open(self.tempfile, 'a') +- if f: +- # if screenlet not already added +- running = utils.list_running_screenlets() +- if running.count(self.screenlet.__name__) == 0: ++ try: ++ f = open(self.tempfile, 'a') ++ except OSError, e: ++ print _("Unable to open %s") % self.tempfile ++ return False ++ else: + print _("Creating new entry for %s in %s") % (self.screenlet.__name__, self.tempfile) + f.write(self.screenlet.__name__ + '\n') +- f.close() ++ f.close() ++ else: print _("Screenlet has already been added to %s") % self.tempfile + # WORKAROUND: for now we manually add this to the daemon, + # ideally the daemon should watch the tmpdir for changes + if self.daemon_iface: + self.daemon_iface.register_screenlet(self.screenlet.__name__) + +- def __create_tempfile (self): ++ def __create_tempdir (self): + """Create the global temporary file for saving screenlets. The file is + used for indicating which screnlets are currently running.""" ++ + # check for existence of TMP_DIR and create it if missing + if not os.path.isdir(TMP_DIR): +- print _("No global tempfile found, creating new one.") +- os.mkdir(TMP_DIR) +- if not os.path.isdir(TMP_DIR): ++ try: ++ if os.path.exists(TMP_DIR): ++ # something exists, but is not a directory ++ os.remove(TMP_DIR) ++ ++ print _("No global tempdir found, creating new one.") ++ os.mkdir(TMP_DIR) ++ ++ # make the tmp directory accessible for all users ++ from stat import S_IRWXU, S_IRWXG, S_IRWXO ++ os.chmod(TMP_DIR, S_IRWXU | S_IRWXG | S_IRWXO) ++ print _('Temp directory %s created.') % TMP_DIR ++ except OSError, e: + print _('Error: Unable to create temp directory %s - screenlets-manager will not work properly.') % TMP_DIR ++ print "Error was: %s"%e + return False +- else: +- # create entry in temp dir +- f = open(self.tempfile, 'w') +- f.close() +- return True +- ++ ++ return True ++ + def __unregister_screenlet (self, name=None): + """Delete this session's entry from the gloabl tempfile (and delete the + entire file if no more running screenlets are set."""