diff --git a/light9/vidref/main.py b/light9/vidref/main.py --- a/light9/vidref/main.py +++ b/light9/vidref/main.py @@ -69,8 +69,9 @@ class VideoRecordSink(gst.Element): gst.PAD_ALWAYS, gst.caps_new_any()) - def __init__(self, musicTime): + def __init__(self, musicTime, updateRecordingTo): gst.Element.__init__(self) + self.updateRecordingTo = updateRecordingTo self.sinkpad = gst.Pad(self._sinkpadtemplate, "sink") self.add_pad(self.sinkpad) self.sinkpad.set_chain_function(self.chainfunc) @@ -129,6 +130,7 @@ class VideoRecordSink(gst.Element): outFilename, (now - self.lastTime) * 1000, (now - t1) * 1000) + self.updateRecordingTo(outDir) self.lastTime = now gobject.type_register(VideoRecordSink) @@ -142,6 +144,8 @@ class Main(object): mainwin.connect("destroy", gtk.main_quit) wtree.connect_signals(self) + self.recordingTo = wtree.get_object('recordingTo') + # wtree.get_object("replayPanel").show() # demo only rp = wtree.get_object("replayVbox") self.replayViews = ReplayViews(rp) @@ -186,7 +190,15 @@ class Main(object): return e sink = makeElem("xvimagesink") - recSink = VideoRecordSink(self.musicTime) + def setRec(t): + # if you're selecting the text while gtk is updating it, + # you can get a crash in xcb_io + if getattr(self, '_lastRecText', None) == t: + return + with gtk.gdk.lock: + self.recordingTo.set_text(t) + self._lastRecText = t + recSink = VideoRecordSink(self.musicTime, setRec) self.pipeline.add(recSink) tee = makeElem("tee") diff --git a/light9/vidref/replay.py b/light9/vidref/replay.py --- a/light9/vidref/replay.py +++ b/light9/vidref/replay.py @@ -54,7 +54,12 @@ class ReplayViews(object): v.destroy() self.views[:] = [] - takes = sorted(os.listdir(songDir(song))) + d = songDir(song) + try: + takes = sorted(os.listdir(d)) + except OSError: + return + for take in takes: td = takeDir(songDir(song), take) r = Replay(td) diff --git a/light9/vidref/vidref.glade b/light9/vidref/vidref.glade --- a/light9/vidref/vidref.glade +++ b/light9/vidref/vidref.glade @@ -74,9 +74,10 @@ 75 20 True - Frame rate + Frame rate: + False 0 @@ -106,9 +107,10 @@ 85 20 True - Input source + Input source: + False 0 @@ -127,6 +129,36 @@ 2 + + + True + + + True + Recording +to: + + + 0 + + + + + True + True + False + char + recordingTo + + + 1 + + + + + 3 + + False @@ -307,4 +339,7 @@ True gtk-delete + + /home/drewp/light9-vidref/play-light9.bigasterisk.com_show_dance2010_song6/1276582699 +