fix possible crash on task abort and work with new getCD return value
[enigma2.git] / lib / python / Plugins / Extensions / DVDBurn / Process.py
index 688735f273469784b6afa6a8a970596197ab3999..9ee5a3c621349141a930443f44c096ec3f4df0df 100644 (file)
@@ -1,4 +1,5 @@
-from Components.Task import Task, Job, job_manager, DiskspacePrecondition, Condition, ToolExistsPrecondition
+from Components.Task import Task, Job, DiskspacePrecondition, Condition, ToolExistsPrecondition
+from Components.Harddisk import harddiskmanager
 from Screens.MessageBox import MessageBox
 
 class png2yuvTask(Task):
@@ -264,9 +265,8 @@ class BurnTask(Task):
                self.postconditions.append(BurnTaskPostcondition())
                self.setTool("/bin/growisofs")
                volName = self.getASCIIname(job.project.settings.name.getValue())
-               self.args += [ "-dvd-compat", "-Z", "/dev/cdroms/cdrom0", "-V", volName, "-publisher", "Dreambox", "-use-the-force-luke=dummy" ]
+               self.args += [ "-dvd-compat", "-Z", "/dev/" + harddiskmanager.getCD(), "-V", volName, "-publisher", "Dreambox", "-use-the-force-luke=dummy" ]
                self.args += extra_args
-               self.args += [ self.job.workspace + "/dvd" ]
 
        def getASCIIname(self, name):
                ASCIIname = ""
@@ -303,7 +303,7 @@ class BurnTask(Task):
                                self.error = self.ERROR_SIZE
                        elif line.find("write failed") != -1:
                                self.error = self.ERROR_WRITE_FAILED
-                       elif line.find("unable to open64(\"/dev/cdroms/cdrom0\",O_RDONLY): No such file or directory") != -1: # fixme
+                       elif line.find("unable to open64(") != -1 and line.find(",O_RDONLY): No such file or directory") != -1:
                                self.error = self.ERROR_DVDROM
                        elif line.find("media is not recognized as recordable DVD") != -1:
                                self.error = self.ERROR_NOTWRITEABLE
@@ -336,6 +336,9 @@ class PreviewTask(Task):
                        self.previewProject()
                else:
                        self.job.project.session.openWithCallback(self.previewCB, MessageBox, _("Do you want to preview this DVD before burning?"), timeout = 60, default = False)
+
+       def abort(self):
+               self.finish(aborted = True)
        
        def previewCB(self, answer):
                if answer == True:
@@ -663,7 +666,7 @@ class DVDJob(Job):
                DVDAuthorTask(self, diskSpaceNeeded)
                
                nr_titles = len(self.project.titles)
-               
+
                if self.menupreview:
                        PreviewTask(self)
                else:
@@ -677,7 +680,7 @@ class DVDJob(Job):
                                RemoveESFiles(self, demux)
                        WaitForResidentTasks(self)
                        PreviewTask(self)
-                       BurnTask(self,["-dvd-video"])
+                       BurnTask(self, ["-dvd-video", self.workspace + "/dvd"])
                RemoveDVDFolder(self)
 
 class DVDdataJob(Job):
@@ -704,20 +707,5 @@ class DVDdataJob(Job):
                        link_name =  self.workspace + filename
                        LinkTS(self, title.inputfile, link_name)
                        CopyMeta(self, title.inputfile)
-               BurnTask(self)
+               BurnTask(self, ["-follow-links", self.workspace])
                RemoveDVDFolder(self)
-
-def Burn(session, project):
-       j = DVDJob(project)
-       job_manager.AddJob(j)
-       return j
-
-def PreviewMenu(session, project):
-       j = DVDJob(project, menupreview=True)
-       job_manager.AddJob(j)
-       return j
-
-def BurnDataTS(session, project):
-       j = DVDdataJob(project)
-       job_manager.AddJob(j)
-       return j