neutrino recording.start scripte

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

neutrino recording.start scripte

Beitrag von mb405 »

ich hab grad festgestellt, wenn man direktaufnahme drückt, und bei der auswahl der verzeichnisse home drückt. also das abbricht, wird recording.start script geladen. kann man das unterbinden , oder wenigstens anschliessend das recording end bei home starten ?

ich nutze es leider nur zum "abschiessen" des sectionsd clienten, da er mir alle aufnahmen zunichte macht.
genialer wäre es mit der denke ich noch ungenutzten funktion von sectionsd.

g_Sectionsd->freeMemory();

nur leider kann ich es an der stelle nicht einbauen, da so kein epg bei aufnahme mehr da ist.

evtl kann sich das mal einer ansehen ?
Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 21:48

Beitrag von Günther »

Bei Aufnahme würde ich kein freeMemory machen. Habe bei mir testhalber die angestaubte Funktion removeOldEvents() im sectionsd reaktiviert (war noch ein bug drinnen). Wenn die Cache-Time veringert wird, löscht diese Funktion alle Events, welche zu weit in der Zukunft liegen. Beim Aufnahmestart habe ich dann den Cache auf 6 Stunden eingestellt und bei Aufnahmeende wieder auf den alten Wert gestellt. So hat man auch während der Aufnahme einen EPG (auch für die Folgeaufnahme).

Beim Movieplayer und Audioplayer dagegen kann man ohne weiteres freeMemory machen. Und wenn man den sectionsd in der neutrino_start gleich mit 'nice -n 10 sectionsd' startet, gibt es auch kein Performance-Problem, da dann neutrino eine höhere Prio hat und damit trotz 100% sectionsd Auslastung bedienbar bleibt.

Für nice muß noch die busybox angepaßt werden, würde aber vorschlagen, die Befehle nice, renice und top gleich im cvs zu aktivieren. Die drei 'verbrauchen' nur ca. 6 KB und sind doch sehr nützlich ..

Das andere würde ich auch im cvs sehen ...
Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 21:48

Beitrag von Günther »

Also in etwa so (auf die schnelle aus einer alten Version extrahiert, kann sein das da noch Fehler drinnen sind).

Houdini hat inzwischen den sectionsd mit einer ConfigApi-Funktion erweitert, ev. läßt sich das auch darüber realisieren. So ist es aber 'einfacher'. ;)

busybox.config.m4

Code: Alles auswählen

option(`CONFIG_NICE', `y', `y')
option(`CONFIG_RENICE', `y', `y')
option(`CONFIG_TOP', `y', `y')
option(`CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE', `y', 'y')
start_neutrino

Code: Alles auswählen

nice -n 10 sectionsd
    pidof sectionsd >/dev/null || nice -n 10 sectionsd

Code: Alles auswählen

? .cdtproject
? .project
? .settings
? cdk
? cvs.log
? apps/tuxbox/neutrino/data/locale/locals.h
? apps/tuxbox/neutrino/data/locale/locals_intern.h
? apps/tuxbox/tools/kb2rcd/kb2rcd
? apps/tuxbox/tools/misc/avswitch
? driver/ide/.depend
Index: apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp,v
retrieving revision 1.235
diff -u -b -B -r1.235 sectionsd.cpp
--- apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp	23 Jan 2007 20:23:47 -0000	1.235
+++ apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp	2 Feb 2007 23:15:24 -0000
@@ -624,7 +624,7 @@
 	}
 }
 
-#if 0
+#if 1
 static void removeNewEvents(void)
 {
 	// Alte events loeschen
@@ -1414,6 +1414,7 @@
 
 	return ;
 }
+#endif
 
 static void commandSetHoursToCache(int connfd, char *data, const unsigned dataLength)
 {
@@ -1422,8 +1423,13 @@
 
 	dprintf("Set hours to cache: %hd\n", *((unsigned short*)data));
 
+	long oldsecondsToCache = secondsToCache;
+	
 	secondsToCache = *((unsigned short*)data)*60L*60L;
 
+	if(oldsecondsToCache > oldsecondsToCache) // remove event from list, if cache time is reduced
+		removeNewEvents();
+
 	struct sectionsd::msgResponseHeader responseHeader;
 
 	responseHeader.dataLength = 0;
@@ -1432,7 +1438,6 @@
 
 	return ;
 }
-#endif
 
 static void sendAllEvents(int connfd, t_channel_id serviceUniqueKey, bool oldFormat = true, char search = 0, std::string search_text = "")
 {
@@ -3925,7 +3930,7 @@
 {	commandDumpStatusInformation,		"commandDumpStatusInformation"		},
         //commandAllEventsChannelName,
 {	commandAllEventsChannelIDSearch,        "commandAllEventsChannelIDSearch"	},
-{	commandDummy2,				"commandSetHoursToCache"		},
+{	commandSetHoursToCache,				"commandSetHoursToCache"		},
 {	commandDummy2,				"commandSetEventsAreOldInMinutes"	},
 {	commandDumpAllServices,                 "commandDumpAllServices"		},
 {	commandEventListRadio,                  "commandEventListRadio"			},
Index: apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.cpp,v
retrieving revision 1.53
diff -u -b -B -r1.53 sectionsdclient.cpp
--- apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.cpp	12 Jan 2007 22:57:57 -0000	1.53
+++ apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.cpp	2 Feb 2007 23:15:26 -0000
@@ -120,6 +120,13 @@
 	}
 }
 
+void CSectionsdClient::setHoursToCache(const unsigned short hours)
+{
+	send(sectionsd::setHoursToCache, (char*)&hours, sizeof(hours));
+
+	readResponse();
+	close_connection();
+}
 
 #if 0
 void CSectionsdClient::setEventsAreOldInMinutes(const unsigned short minutes)
Index: apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.h
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.h,v
retrieving revision 1.42
diff -u -b -B -r1.42 sectionsdclient.h
--- apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.h	12 Jan 2007 22:57:57 -0000	1.42
+++ apps/tuxbox/neutrino/lib/sectionsdclient/sectionsdclient.h	2 Feb 2007 23:15:26 -0000
@@ -172,6 +172,7 @@
 
 	bool getIsTimeSet();
 
+	void setHoursToCache(const unsigned short hours);
 //	void setEventsAreOldInMinutes(const unsigned short minutes);
 	
 	void setPauseScanning(const bool doPause);
Index: apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp,v
retrieving revision 1.105
diff -u -b -B -r1.105 vcrcontrol.cpp
--- apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp	13 Sep 2006 19:37:16 -0000	1.105
+++ apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp	2 Feb 2007 23:15:28 -0000
@@ -335,7 +335,10 @@
 	if (!g_Zapit->isPlayBackActive() && 
 	    CNeutrinoApp::getInstance()->getMode() != NeutrinoMessages::mode_standby)
 		g_Zapit->startPlayBack();
+
 	g_Sectionsd->setPauseScanning(false);
+	g_Sectionsd->setHoursToCache(atoi(g_settings.epg_cache.c_str()) * 24);
+	
 	g_Zapit->setRecordMode( false );
 	// alten mode wieder herstellen (ausser wen zwischenzeitlich auf oder aus sb geschalten wurde)
 	if(CNeutrinoApp::getInstance()->getMode() != last_mode && 
@@ -400,6 +403,7 @@
 
 	if(StopSectionsd)								// wenn sectionsd gestoppt werden soll
 		g_Sectionsd->setPauseScanning(true);		// sectionsd stoppen
+	g_Sectionsd->setHoursToCache(12);
 
 	g_Zapit->setRecordMode( true );					// recordmode einschalten
 }
Index: apps/tuxbox/neutrino/src/gui/audioplayer.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/audioplayer.cpp,v
retrieving revision 1.43
diff -u -b -B -r1.43 audioplayer.cpp
--- apps/tuxbox/neutrino/src/gui/audioplayer.cpp	30 Nov 2005 05:24:32 -0000	1.43
+++ apps/tuxbox/neutrino/src/gui/audioplayer.cpp	2 Feb 2007 23:15:32 -0000
@@ -308,6 +308,7 @@
 
 	CLCD::getInstance()->setMode(CLCD::MODE_AUDIO);
 	paintLCD();
+    	g_Sectionsd->freeMemory();
 
 	bool loop = true;
 	bool update = true;
Index: apps/tuxbox/neutrino/src/gui/movieplayer.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/movieplayer.cpp,v
retrieving revision 1.138
diff -u -b -B -r1.138 movieplayer.cpp
--- apps/tuxbox/neutrino/src/gui/movieplayer.cpp	31 Dec 2006 13:51:16 -0000	1.138
+++ apps/tuxbox/neutrino/src/gui/movieplayer.cpp	2 Feb 2007 23:15:40 -0000
@@ -403,6 +403,7 @@
 
 	// Stop sectionsd
 	g_Sectionsd->setPauseScanning (true);
+    	g_Sectionsd->freeMemory();  // ??? More Memory for playback
 
 	isBookmark=false;
 	startfilename = "";