# http://vdr-portal.de/board/thread.php?postid=746617#post746617 diff -Nru extrecmenu-1.2/CHANGES.AM extrecmenu-1.2-am1/CHANGES.AM --- extrecmenu-1.2/CHANGES.AM 1970-01-01 01:00:00.000000000 +0100 +++ extrecmenu-1.2-am1/CHANGES.AM 2008-09-07 19:54:06.000000000 +0200 @@ -0,0 +1,7 @@ +- fixed wrong help keys if selected recording finishes cutting. +- plugins/extrecmenu/dircmds.conf for recording directory commands (same as reccmds.conf) +- "nice" the action thread. +- Use LimitBandwidth setting also for cutting. + +TODO: +- ioprio_set diff -Nru extrecmenu-1.2/extrecmenu.c extrecmenu-1.2-am1/extrecmenu.c --- extrecmenu-1.2/extrecmenu.c 2008-03-21 12:38:24.000000000 +0100 +++ extrecmenu-1.2-am1/extrecmenu.c 2008-09-07 19:54:51.000000000 +0200 @@ -11,7 +11,7 @@ using namespace std; -static const char *VERSION = "1.2"; +static const char *VERSION = "1.2-am1"; static const char *DESCRIPTION = tr("Extended recordings menu"); static const char *MAINMENUENTRY = "ExtRecMenu"; @@ -74,6 +74,8 @@ MoveCutterThread=new WorkerThread(); + RecordingDirCommands.Load(AddDirectory(cPlugin::ConfigDirectory(PLUGIN_NAME_I18N), "dircmds.conf"), true); + return true; } diff -Nru extrecmenu-1.2/mymenurecordings.c extrecmenu-1.2-am1/mymenurecordings.c --- extrecmenu-1.2/mymenurecordings.c 2008-09-07 19:53:08.000000000 +0200 +++ extrecmenu-1.2-am1/mymenurecordings.c 2008-09-07 20:00:26.000000000 +0200 @@ -529,7 +529,7 @@ switch(newhelpkeys) { case 0: SetHelp(NULL);break; - case 1: SetHelp(tr("Button$Open"),NULL,tr("Button$Edit"));break; + case 1: SetHelp(RecordingDirCommands.Count()?tr("Button$Commands"):tr("Button$Open"),NULL,tr("Button$Edit"));break; case 2: SetHelp(RecordingCommands.Count()?tr("Button$Commands"):tr("Button$Play"),tr("Button$Rewind"),tr("Button$Edit"),tr("Button$Info"));break; case 3: SetHelp(RecordingCommands.Count()?tr("Button$Commands"):tr("Button$Play"),tr("Button$Rewind"),tr("Button$Cancel"),tr("Button$Info"));break; case 4: SetHelp(RecordingCommands.Count()?tr("Button$Commands"):tr("Button$Play"),tr("Button$Rewind"),tr("Button$Edit"),NULL);break; @@ -934,15 +934,24 @@ return osContinue; myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); - if(item && !item->IsDirectory()) + if(item) { cRecording *recording=GetRecording(item); if(recording) { char *parameter=NULL; - asprintf(¶meter,"\"%s\"",recording->FileName()); + if (item->IsDirectory()) + { + char *strBase=base?ExchangeChars(strdup(base), true):NULL; + char *strName=ExchangeChars(strdup(item->Name()), true); + asprintf(¶meter,"\"%s/%s/%s\"",VideoDirectory,strBase?strBase:"", strName); + free(strBase); + free(strName); + } + else + asprintf(¶meter,"\"%s\"",recording->FileName()); myMenuCommands *menu; - eOSState state=AddSubMenu(menu=new myMenuCommands(trVDR("Recording commands"),&RecordingCommands,parameter)); + eOSState state=AddSubMenu(menu=new myMenuCommands(trVDR("Recording commands"),item->IsDirectory() ? &RecordingDirCommands : &RecordingCommands,parameter)); free(parameter); if(Key!=kNone) state=menu->ProcessKey(Key); @@ -1013,15 +1022,16 @@ state=cOsdMenu::ProcessKey(Key); if(state==osUnknown) { + myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); + switch(Key) { case kOk: return Play(); - case kRed: return (helpkeys>1 && RecordingCommands.Count())?Commands():Play(); + case kRed: return (helpkeys>0 && item && ((item->IsDirectory() && RecordingDirCommands.Count()) || (!item->IsDirectory() && RecordingCommands.Count())))?Commands():Play(); case kGreen: return Rewind(); case kYellow: { if(!HasSubMenu()) { - myMenuRecordingsItem *item=(myMenuRecordingsItem*)Get(Current()); if(item) { if(item->IsDirectory()) @@ -1096,13 +1106,14 @@ default: break; } } - if(Recordings.StateChanged(recordingsstate) || MoveCutterThread->IsCutterQueueEmpty()) + bool stateChanged = Recordings.StateChanged(recordingsstate); + if(stateChanged || MoveCutterThread->IsCutterQueueEmpty()) Set(true); if(!Count() && level>0) state=osBack; - if(!HasSubMenu() && Key!=kNone) + if((!HasSubMenu() && Key!=kNone) || stateChanged) SetHelpKeys(); } return state; diff -Nru extrecmenu-1.2/mymenusetup.c extrecmenu-1.2-am1/mymenusetup.c --- extrecmenu-1.2/mymenusetup.c 2008-03-15 16:11:08.000000000 +0100 +++ extrecmenu-1.2-am1/mymenusetup.c 2008-09-07 20:00:43.000000000 +0200 @@ -5,6 +5,8 @@ #include #include "mymenusetup.h" +cCommands RecordingDirCommands; + mySetup::mySetup() { mysetup.HideMainMenuEntry=0; diff -Nru extrecmenu-1.2/mymenusetup.h extrecmenu-1.2-am1/mymenusetup.h --- extrecmenu-1.2/mymenusetup.h 2008-03-15 16:11:08.000000000 +0100 +++ extrecmenu-1.2-am1/mymenusetup.h 2008-09-07 20:01:06.000000000 +0200 @@ -1,5 +1,7 @@ #include +extern cCommands RecordingDirCommands; + class mySetup { public: diff -Nru extrecmenu-1.2/tools.c extrecmenu-1.2-am1/tools.c --- extrecmenu-1.2/tools.c 2008-09-07 19:53:08.000000000 +0200 +++ extrecmenu-1.2-am1/tools.c 2008-09-07 20:02:06.000000000 +0200 @@ -283,6 +283,8 @@ { CutterListItem *cutteritem=NULL; MoveListItem *moveitem=NULL; + + SetPriority(19); while(Running()) { @@ -501,6 +503,10 @@ else lastmark=true; } + + if(mysetup.LimitBandwidth) + usleep(10); + } if(!Running() || cancelcut || error) {