Author: duncan
Date: Thu Mar 6 16:11:31 2008
New Revision: 10473
Log:
Added locking to the ScheduledRecordings, to allow grouping of writes to be
written when unlocked
Modified:
branches/rel-1/freevo/freevo_config.py
branches/rel-1/freevo/src/helpers/recordserver.py
branches/rel-1/freevo/src/tv/record_types.py
Modified: branches/rel-1/freevo/freevo_config.py
==============================================================================
--- branches/rel-1/freevo/freevo_config.py (original)
+++ branches/rel-1/freevo/freevo_config.py Thu Mar 6 16:11:31 2008
@@ -349,6 +349,8 @@
(5.23,
''' Added XMLTV_TIMEZONE to allow the time zone to be specified
Added OSD_X11_CURSORS to allow custom cursor to be set, stops xine
showing a cursor
+ Changes TV_RECORD_SCHEDULE to be a pickle file, this will delete existing
favorites
+ Added TV_RECORD_FAVORITES and TV_RECORD_FAVORITES_LIST to keep favorites
separate
'''),
]
Modified: branches/rel-1/freevo/src/helpers/recordserver.py
==============================================================================
--- branches/rel-1/freevo/src/helpers/recordserver.py (original)
+++ branches/rel-1/freevo/src/helpers/recordserver.py Thu Mar 6 16:11:31 2008
@@ -286,7 +286,6 @@
schedule = ScheduledRecordings()
self.findOverlaps(schedule)
- _debug_('saving cached file %r with %s items' %
(config.TV_RECORD_SCHEDULE, len(schedule.program_list)), 1)
schedule.saveRecordSchedule()
@@ -438,7 +437,7 @@
def addRecordingToSchedule(self, prog=None, inputSchedule=None):
- _debug_('addRecordingToSchedule(%s, inputSchedule=%r)' % (prog,
inputSchedule), 1)
+ _debug_('addRecordingToSchedule(%r, inputSchedule=%r)' % (prog,
inputSchedule), 1)
if inputSchedule:
schedule = inputSchedule
else:
@@ -451,7 +450,7 @@
def removeRecordingFromSchedule(self, prog=None, inputSchedule=None):
- _debug_('removeRecordingFromSchedule(%s, inputSchedule=%r)' % (prog,
inputSchedule), 1)
+ _debug_('removeRecordingFromSchedule(%r, inputSchedule=%r)' % (prog,
inputSchedule), 1)
if inputSchedule:
schedule = inputSchedule
else:
@@ -676,7 +675,7 @@
@kaa.rpc.expose('scheduleRecording')
def scheduleRecording(self, prog=None):
- _debug_('scheduleRecording(%s)' % (prog,), 1)
+ _debug_('scheduleRecording(%r)' % (prog,), 1)
global guide
if prog is None:
@@ -1197,12 +1196,14 @@
tmp[fav.name] = fav
schedule = self.getScheduledRecordings()
+ schedule.lock()
progs = schedule.getProgramList()
for prog in progs.values():
(isFav, favorite) = self.isProgAFavorite(prog, tmp)
if isFav:
self.removeScheduledRecording(prog)
+ schedule.unlock()
return (True, 'favorite unscheduled')
@@ -1244,10 +1245,10 @@
schedule = self.getScheduledRecordings()
favs = self.getFavorites()
-
if not len(favs):
return False
+ schedule.lock()
# Then remove all scheduled favorites in that timeframe to
# make up for schedule changes.
@@ -1275,6 +1276,7 @@
prog.isFavorite = favorite
self.scheduleRecording(prog)
+ schedule.unlock()
return True
Modified: branches/rel-1/freevo/src/tv/record_types.py
==============================================================================
--- branches/rel-1/freevo/src/tv/record_types.py (original)
+++ branches/rel-1/freevo/src/tv/record_types.py Thu Mar 6 16:11:31 2008
@@ -43,6 +43,7 @@
TYPES_VERSION = 3
critical_section = threading.Lock()
+schedule_locked = False
class ScheduledRecordings:
@@ -55,6 +56,25 @@
self.program_list = {}
self.manual_recordings = self.loadManualRecordings()
self.favorites = self.loadFavorites()
+ global schedule_locked
+ schedule_locked = False
+
+
+ def lock(self):
+ global schedule_locked
+ schedule_locked = True
+
+
+ def unlock(self):
+ global schedule_locked
+ if schedule_locked:
+ schedule_locked = False
+ self.saveRecordSchedule()
+
+
+ def get_locked(self):
+ global schedule_locked
+ return schedule_locked
def loadRecordSchedule(self):
@@ -78,6 +98,9 @@
def saveRecordSchedule(self):
""" Save the tv recording schedule to a pickle file """
+ global schedule_locked
+ if schedule_locked:
+ return
_debug_('saveRecordSchedule()', 1)
try:
schedule_fh = open(config.TV_RECORD_SCHEDULE, 'wb')
@@ -94,11 +117,7 @@
def addProgram(self, prog, key=None):
""" """
- _debug_('addProgram(%s, key=%r)' % (prog, key), 1)
- if not key:
- # key = rec_interface.getKey(prog)
- pass
-
+ _debug_('addProgram(%r, key=%r)' % (prog, key), 1)
if not self.program_list.has_key(key):
self.program_list[key] = prog
_debug_('%s "%s" added' % (key, prog), 1)
@@ -109,11 +128,7 @@
def removeProgram(self, prog, key=None):
""" """
- _debug_('removeProgram(%s, key=%r)' % (prog, key), 1)
- if not key:
- # key = rec_interface.getKey(prog)
- pass
-
+ _debug_('removeProgram(%r, key=%r)' % (prog, key), 1)
if self.program_list.has_key(key):
del self.program_list[key]
_debug_('%s "%s" removed' % (key, prog), 1)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog