[1] 2 >>> Archiv / MLD 3.x / General / Mld 3.x Getestet
 

Offline Christian

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1531
    • View Profile
    • http://www.minidvblinux.de
Mld 3.x Getestet
« on: January 19, 2011, 09:31:03 »
Hallo Claus, Hallo MarMic, Hallo @all

ich habe gerade die neue MLD getestet (HD ISO) von der Live CD

es geht! :)  Ich hatte ein Bild, welches flüssig lief (SD ARD) weitere Tests kommt später :)

Meine Hardware zur Zeit ist ein AMD X2 + Nvidia G220 welche vdpau fähig sind.

Nach guten 2 Jahren finde ich es gut, dass die MLD wieder supportet wird. Besonders erfreut bin ich darüber, dass auch das Thema HD behandelt wird.

Falls der DevServer von damals noch aktiv sein sollte, würde ich mich, sofern erwünscht auch gerne wieder bereit erklären die plugins und bugs zu fixen. Meine Tochter geht inzwischen schon straff auf die 3 zu :), wodurch ich ab und zu für euch zur Verfügung stehen könnte.

Ein kleinen Crashkurs in die neue MLD wäre von nöten, sowie alle Zugangsdaten zum Develserver (sofern noch vorhanden).

Viele Liebe Grüße
Christian
__________________________________________

"...ich schreibe 80% meiner Beiträge aus dem Kopf ... bitte nicht schlagen wenn mal ein Path nicht passt :) ..."

MFG Christian

Nokia Sat DBox2 + Multicam

Hardware VDR: ASUS E35M1-I Deluxe, 4GB RAM, ATI 6XXX onboard, TT S2-6400 FF, Samsung 500GB 2,5"


Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #1 on: January 19, 2011, 09:38:46 »
hi christian,

schön hat dich meine pn im vdr-portal doch erreicht?

ehm bei mld3.0 hat sich einiges geändert du kannst vollkommen auf ner localen maschiene entwickeln! (musst es zZ sogar noch)

claus hat ne schöne anleitung dazu bei nem pinned post im forum. ansonsten zum aufsetzen der umgebung (und nen kurzen crash kurs) bin ich jeder zeit bereit. auch wenn mein wissen nichtmal 1% von claus seinem abdeckt, kann ich sicher beim einstieg helfen!

... teste mal das devel iso :-) statt dem hd :-)

greetz
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20313
    • View Profile
    • ClausMuus.de
Mld 3.x Getestet
« Reply #2 on: January 19, 2011, 14:19:57 »
Hi Christian,

freut mich zu hören, das Du wieder mit von der Patie bist.
Wenn ich da drann denke in welcher Geschwindigkeit Du bei der MLD-2 Addons produziert hast, wird es wohl höchste Zeit, dass ich mich um eine Möglichkeit kümmere, dass nicht nur ich checkins durchführen kann.

Wichtigste Neuerung ist, dass keine Binaries mehr eingecheckt werden. Libraries werden wie bei der MLD-2 automatisch zusammen gesucht, und alle anderen Binaries werden durch Softlinks in das root Filesystem des Devel Systems ersetzt. Ausserdem werden kompilierte Binaries nicht wie bisher in den Template Ordner kopiert, sondern in den Ordner $(modul).

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline Christian

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1531
    • View Profile
    • http://www.minidvblinux.de
Mld 3.x Getestet
« Reply #3 on: January 20, 2011, 05:47:37 »
Ok alles soweit verstanden (denke ich :) )

Werden alle benötigten Binaries automatisch in die addons kopiert, genau wie die Libraries damals, insofern der Symlink im Addon Ordner vorhanden ist? Müssen alle selbst kompilierten Bin´s auch als symlink hinterlegt werden? (sicherheitshalber einmal nachfragen, aber ich denke wenn ich erst einmal ausgecheckt habe erklärt sich vieles von selbst :))

Ich habe mir schon eine vm mit Ubuntu natty (ich hoffe das diese nicht noch zu buggy ist) aufgesetzt und habe auch schon eine Konsolle welche User Rechte besitzt. Den Root würde oder kann ich per sudo su öffnen.

Welche Rechte benötige ich generell zum bauen? Ist es zwingend notwendig root Rechte zu besitzen?

Habt Ihr euch eine VM Ware installiert auf dem "lokalen Devel System" zum testen des gabauten Isos oder wie testet Ihr die Images/Addons? In meinem Fall könnte ich eine VM in der vm bauen oder eine VM für das Devel System und eine zum testen?

Welche Parameter für die VM habt ihr eingestellt zum testen der isos?

Geht im Moment nur auschecken?
« Last Edit: January 20, 2011, 05:57:41 by Christian »
__________________________________________

"...ich schreibe 80% meiner Beiträge aus dem Kopf ... bitte nicht schlagen wenn mal ein Path nicht passt :) ..."

MFG Christian

Nokia Sat DBox2 + Multicam

Hardware VDR: ASUS E35M1-I Deluxe, 4GB RAM, ATI 6XXX onboard, TT S2-6400 FF, Samsung 500GB 2,5"


Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #4 on: January 20, 2011, 06:11:43 »
hi christian,

puhhh das ist zuviel input also:

natty ist noch buggy ;-) wenn du up2date sein willst kanns passieren das du bestimmte deps nicht nachladen kannst weil vorher ein apt-get dist-upgrade schief gegangen ist. oder du hast nach nem dist-upgrade kein gnome mehr oder.... ach soviele sachen die ich mit natty schon erlebt habe :-P, aber solange du kein dist-upgrade machst ist es relativ save :-P

ich nutze zZ ubuntu 10.10 desktop und linux mint (erscheint mit performenter), aber habe genug natty buidls getestet! -> geht also

wenn du nen link vom root system nach /MLD/addonname/template setzt werden automatisch die binarys+libs nach /MLD/addonname/addon kopiert! es gehen auch verknüpfungen auf ganze ordner (siehe xinelib oder xorg)

shell mit user rechten reicht völlig aus! nur wenn du ein apt-get install $(make deps) machst brauchste halt kurzfristig sudo! ansonsten baue ich nur als user

ich mache das so, dass meine devel umgebung als vm läuft und da ich ehy dropbear apt-getten muss kann ich dann per winscp die isos kopieren und dann mld in einer weiteren vm starten zum testen. 2 vms parallel auf win7

desweiteren teste ich grob auf der vm und wenn da nichts mehr zu sehen ist teste ich auch alles auf real hardware!

ja geht nur auschecken und ne änderung am besten mit
in /addonname/
make clean
cd ..
tar -czf addonname.tar addonname
und per mail an claus :-)

noch wird das so gehandhabt

wenn du noch fragen zum aufsetzen der develumgebung hast (ich glaube so oft wie ich das shcon gemacht habe hat das noch keiner gemacht :-P) dann kannste mich auch ruhig per skype/icq kontaktieren -> schreib mir einfach ne pn mit kontaktdaten

greetz

edit:// wegen der vm: ich nutze virtualbox4.0 udn 3.2 (je nach rechner wo ich grade schaffe). wichtig ist nur das du 256mb ram einstellst alles andere war beim testen bis jetzt egal. aber das deve iso startet def nicht mit 128 :-P
weiterer vorteil von virtualbox => es sind die grafiktreiber enthalten in der mld

greetz
« Last Edit: January 20, 2011, 06:14:40 by MarMic »
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline Christian

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1531
    • View Profile
    • http://www.minidvblinux.de
Mld 3.x Getestet
« Reply #5 on: January 21, 2011, 03:54:40 »
Danke,

so..ich habe jetzt 10.10 (aktuell).. MLD ausgecheckt.. alles bestens.. :)

Ist es nötig wie bei der MLD 2 in der Makefile.config wieder Benutzer und co zu hinterlegen? Welche Einstellung kann oder muss ich setzen?

Die Version 3 erinnert mich sehr stark beim entwickeln an die MLD 2 :) , wie es aussieht kann man die Addons vom MLD2 zu MLD3 relativ leicht portieren :)

LG
Christian
__________________________________________

"...ich schreibe 80% meiner Beiträge aus dem Kopf ... bitte nicht schlagen wenn mal ein Path nicht passt :) ..."

MFG Christian

Nokia Sat DBox2 + Multicam

Hardware VDR: ASUS E35M1-I Deluxe, 4GB RAM, ATI 6XXX onboard, TT S2-6400 FF, Samsung 500GB 2,5"


Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #6 on: January 21, 2011, 03:58:27 »
hi christian,

benutzer und co werden aus deiner ubuntu install genommen.

mit make checkout_old name=addonname werden die mld2 addons aus dem svn geladen und auch soweit wie möglich an das neue system der mld3 angepasst (wenn nötig).

nur ich hänge grade an den perl sachen -> da einige addons perl brauchen und mri ist das dann doch noch zu komplex :-) als linux noooob

@claus so mal nebenbei braucht man diese check_perl oder wie die funktion heißt noch?

greetz
 
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20313
    • View Profile
    • ClausMuus.de
Mld 3.x Getestet
« Reply #7 on: January 21, 2011, 05:02:01 »
@MarMic,

Perl wollte ich diesmal komplett übernehmen und nicht wie bei der MLD-2 nur die Teile die gebraucht werden. Du musst also vermutlich nur die /usr/bin/perl und den /usr/lib/perl-xxx Ordner verlinken und gut ist. Also kein check_perl,...

@Christian,

ja, da hat sich nicht viel geändert, außer halt das die Binaries aus den Templates durch Links ersetzt und der template Ordner beim make nicht mehr verändert, sondern nach $(modul) (das ist der Ordner "addon") kopiert werden.
Das make checkout_old passt soweit automatisch möglich das Makefile, die INSTALL und die /etc/init.d/xxx an. Den Ordner /etc/init.d/boot.d gibt es nicht mehr. Kernelmodule werden nicht mehr unter template/lib hinterlegt, sondern im Makefile unter "modules" eingetragen.
Ein Vergleich eines der MLD-3 und MLD-2 Addons sollte die Meisten
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #8 on: January 21, 2011, 07:26:50 »
hi claus,

wegen perl

also es gibt /usr/bin/perl und /usr/bin/per5.10.1 beides sind binarys wieso auch immer! mit -v sehe ich das es beides die gleichen versionen sind! bei mld2 habe ich gesehen, dass ihr das so gelöst habt perl5.8.8 genommen und diese im template nochmal mit perl verlinkt.... das würde aber bei dem shema der mld gegen updates des rootsystem schlagen

=> d.h. ich sollte perl linken, oder? weiterhin gibt es /usr/lib/perl5 und usr/lib/perl welche davon? bei mld2 habt ihr /usr/lib/perl5 genommen

perl5 ist kleiner als perl (wieso auch immer) das ist sehr sehr komisch liegt aber vllt einfach nur an meiner desktop install. was wird dir den von minimal install geliefert? dann nehmen wir das doch einfach!?

greetz
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20313
    • View Profile
    • ClausMuus.de
Mld 3.x Getestet
« Reply #9 on: January 22, 2011, 07:14:56 »
Du kanns unter /usr/bin die Links "ln -s perl5 perl" und "ln -s /usr/bin/perl5 perl5" anlegen. Der perl link wird nicht aufgelöst und bleibt erhalten.
Die Lib Ordner werden wohl beide benötigt. Müssen wir halt später mal ausprobieren ob man einen der Beiden Ordner löschen kann.

Claus
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 12TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #10 on: January 22, 2011, 09:33:37 »
ehm haette jetzt einfach perl5.10.1 aus dem root verknüpft und darauf ne perl verknüpfung! aber dann habe wir weiterhin das problem das wenn nun natty mit 5.12 kommt das nicht geht

weisste was ich meine?

greetz
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline Matthias

  • Expert Member
  • *****
  • Posts: 2006
    • View Profile
Mld 3.x Getestet
« Reply #11 on: January 22, 2011, 10:21:22 »
Quote
Hallo Claus, Hallo MarMic, Hallo @all

. Meine Tochter geht inzwischen schon straff auf die 3 zu :), wodurch ich ab und zu für euch zur Verfügung stehen könnte.

Viele Liebe Grüße
Christian
Hallo Christian,

schön von Dir zu hören.
ist das echt schon 3 Jahre her?
Kaum zu glauben!!!

Ich bin diese Woche noch halb beschäftlich halb privat im warmen Israel - sitze gerade draussen .-)

ich bn ab Montag wieder dabei und teste fleißig.

So long.

Matthias
 
Produktiv System:
SAT over IP -> OctopusNet mit Unicable LNB: Inverto IDLU-24UL40-UNMOO-OPP
MLD 5.5 unstable/64Bit , Intel NUC BOXNUC6CAYH, 1 x 128 GB SSD, 8GB RAM + 1 x 3 TB HD per NFS (Synology),  Samsung UE32ES6300, Onkyo TX-8270, Nubert Nuline

Offline Christian

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1531
    • View Profile
    • http://www.minidvblinux.de
Mld 3.x Getestet
« Reply #12 on: January 23, 2011, 06:56:19 »
hi,

ich habe schon zwei drei addons/plugins gebaut ...

an welchen addons/plugins arbeitet ihr? Wie wollen/können wir uns verständigen?

lg
christian
__________________________________________

"...ich schreibe 80% meiner Beiträge aus dem Kopf ... bitte nicht schlagen wenn mal ein Path nicht passt :) ..."

MFG Christian

Nokia Sat DBox2 + Multicam

Hardware VDR: ASUS E35M1-I Deluxe, 4GB RAM, ATI 6XXX onboard, TT S2-6400 FF, Samsung 500GB 2,5"


Offline MarMic

  • Administrator
  • Expert Member
  • ********
  • Posts: 4822
    • View Profile
Mld 3.x Getestet
« Reply #13 on: January 23, 2011, 07:18:29 »
hi christian,

hmm am besten wir nehmen das baord so kann jeder intressierte mitlesen? was hast du denn gebaut? wenns geht am besten claus zu senden und der checkts erstmal noch ein!

ich hatte mich am epgsearch versucht bekomme aber ne fehlermeldung die andere auch bekommen... siehe:hier

greetz
SZVDR HD: Intel e5300@1,2ghz - Gigabyte GA-EP41-UD3L - 2GB ddr2 800 - Gainward G210 512mb - Silverstone LC16MR - DVBSky S952 - Astra 19,2 - MLD 5.4

WZVDR HD: Intel g1610@1,6ghz - Intel DH61BE - Scythe Big Shuriken 2 - 4GB ddr3 1333 - Asus GT610 1024mb - Chieftec Hi-Fi HM-02 - Tevii s480 - Astra 19,2 - MLD 5.4


Offline Christian

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1531
    • View Profile
    • http://www.minidvblinux.de
Mld 3.x Getestet
« Reply #14 on: January 23, 2011, 13:37:02 »
Quote
hi christian,

hmm am besten wir nehmen das baord so kann jeder intressierte mitlesen? was hast du denn gebaut? wenns geht am besten claus zu senden und der checkts erstmal noch ein!

ich hatte mich am epgsearch versucht bekomme aber ne fehlermeldung die andere auch bekommen... siehe:hier

greetz
das gleiche problem habe ich auch bei extrecmenu

der vdr muss gepatch werden.

vdr/childlock.h und co fehlen...

Code: [Select]
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/Makefile vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/Makefile
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/Makefile 2010-02-01 14:54:18.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/Makefile 2010-02-01 14:56:26.000000000 +0000
@@ -45,6 +45,8 @@ OBJS = audio.o channels.o ci.o config.o
 
 OBJS += vdrttxtsubshooks.o
 
+OBJS += childlock.o
+
 ifndef NO_KBD
 DEFINES += -DREMOTE_KBD
 endif
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlock.c vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlock.c
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlock.c 1970-01-01 00:00:00.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlock.c 2010-02-01 14:56:26.000000000 +0000
@@ -0,0 +1,166 @@
+#include "childlock.h"
+#include "childlockservice.h"
+#include "plugin.h"
+
+using namespace PinPatch;
+
+IChildLockService* ChildLock::_cachedChildLockService = NULL;
+INotificationService* ChildLock::_cachedNotificationService = NULL;
+
+IChildLockService* ChildLock::ChildLockService()
+{
+    if (!_cachedChildLockService)
+    {
+        IChildLockService* childLockService;
+
+        if (cPluginManager::CallFirstService(CHILDLOCK_SERVICE_ID, &childLockService))
+        {
+            _cachedChildLockService = childLockService;
+        }
+        else
+        {
+            _cachedChildLockService = NULL;
+        }
+    }
+
+    return _cachedChildLockService;
+}
+
+bool ChildLock::IsUnlocked()
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsUnlocked();
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsMenuProtected(const char* MenuName)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsMenuProtected(MenuName);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsChannelProtected(const cChannel* Channel)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsChannelProtected(Channel);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsRecordingProtected(Recording, Name, Base, isDirectory);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsPluginProtected(cPlugin* Plugin)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsPluginProtected(Plugin);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsMenuHidden(const char* MenuName)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsMenuHidden(MenuName);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsPluginHidden(cPlugin* Plugin)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsPluginHidden(Plugin);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+bool ChildLock::IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory)
+{
+    if (IChildLockService* childLockService = ChildLockService())
+    {
+        return childLockService->IsRecordingHidden(Recording, Name, Base, isDirectory);
+    }
+    else
+    {
+        return false;
+    }
+}
+
+INotificationService* ChildLock::NotificationService()
+{
+    if (!_cachedNotificationService)
+    {
+        INotificationService* notificationService;
+
+        if (cPluginManager::CallFirstService(NOTIFICATION_SERVICE_ID, &notificationService))
+        {
+            _cachedNotificationService = notificationService;
+        }
+        else
+        {
+            _cachedNotificationService = NULL;
+        }
+    }
+
+    return _cachedNotificationService;
+}
+
+void ChildLock::NotifyTimerCreation(cTimer* Timer, const cEvent *Event)
+{
+    if (INotificationService* notificationService = NotificationService())
+    {
+        notificationService->NotifyTimerCreation(Timer, Event);
+    }
+}
+
+void ChildLock::NotifyRecordingStart(const char* FileName)
+{
+    if (INotificationService* notificationService = NotificationService())
+    {
+        notificationService->NotifyRecordingStart(FileName);
+    }
+}
+
+void ChildLock::NotifyUserAction(const eKeys key, const cOsdObject* Interact)
+{
+    if (INotificationService* notificationService = NotificationService())
+    {
+        notificationService->NotifyUserAction(key, Interact);
+    }
+}
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlock.h vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlock.h
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlock.h 1970-01-01 00:00:00.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlock.h 2010-02-01 14:56:26.000000000 +0000
@@ -0,0 +1,47 @@
+#ifndef __CHILDLOCK_H
+#define __CHILDLOCK_H
+
+#include "keys.h"
+
+class cChannel;
+class cRecording;
+class cPlugin;
+class cTimer;
+class cEvent;
+class cOsdObject;
+
+namespace PinPatch
+{
+
+class IChildLockService;
+class INotificationService;
+
+class ChildLock
+{
+    private:
+        static IChildLockService* _cachedChildLockService;
+        static INotificationService* _cachedNotificationService;
+        
+    private:
+        static IChildLockService* ChildLockService();
+        static INotificationService* NotificationService();
+
+    public:
+        static bool IsUnlocked();
+
+        static bool IsMenuProtected(const char* MenuName);
+        static bool IsChannelProtected(const cChannel* Channel);
+        static bool IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory);
+        static bool IsPluginProtected(cPlugin* Plugin);
+        
+        static bool IsMenuHidden(const char* MenuName);
+        static bool IsPluginHidden(cPlugin* Plugin);
+        static bool IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory);
+        
+        static void NotifyTimerCreation(cTimer* Timer, const cEvent *Event);
+        static void NotifyRecordingStart(const char* FileName);
+        static void NotifyUserAction(const eKeys key, const cOsdObject* Interact);
+};
+
+};
+#endif
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlockservice.h vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlockservice.h
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/childlockservice.h 1970-01-01 00:00:00.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/childlockservice.h 2010-02-01 14:56:26.000000000 +0000
@@ -0,0 +1,46 @@
+#ifndef __CHILDLOCKSERVICE_H
+#define __CHILDLOCKSERVICE_H
+
+#include "keys.h"
+
+class cChannel;
+class cRecording;
+class cPlugin;
+class cTimer;
+class cEvent;
+class cOsdObject;
+
+namespace PinPatch
+{
+
+#define CHILDLOCK_SERVICE_ID "ChildLockService-v0.1::ChildLockService"
+
+class IChildLockService
+{
+    public:
+        virtual ~IChildLockService() {};
+        virtual bool IsUnlocked() = 0;
+
+        virtual bool IsMenuProtected(const char* MenuName) = 0;
+        virtual bool IsChannelProtected(const cChannel* Channel) = 0;
+        virtual bool IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory) = 0;
+        virtual bool IsPluginProtected(cPlugin* Plugin) = 0;
+        
+        virtual bool IsMenuHidden(const char* MenuName) = 0;
+        virtual bool IsPluginHidden(cPlugin* Plugin) = 0;
+        virtual bool IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory) = 0;
+};
+
+#define NOTIFICATION_SERVICE_ID "PinPlugin-v0.1::NotificationService"
+
+class INotificationService
+{
+    public:
+        virtual ~INotificationService() {};
+        virtual void NotifyTimerCreation(cTimer* Timer, const cEvent *Event) = 0;
+        virtual void NotifyRecordingStart(const char* FileName) = 0;
+        virtual void NotifyUserAction(const eKeys key, const cOsdObject* Interact) = 0;
+};
+
+};
+#endif
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/device.c vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/device.c
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/device.c 2010-02-01 14:54:18.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/device.c 2010-02-01 14:56:26.000000000 +0000
@@ -19,6 +19,7 @@
 #include "status.h"
 #include "transfer.h"
 #include "vdrttxtsubshooks.h"
+#include "childlock.h"
 
 // --- cLiveSubtitle ---------------------------------------------------------
 
@@ -637,6 +638,7 @@ bool cDevice::SwitchChannel(int Directio
      cChannel *channel;
      while ((channel = Channels.GetByNumber(n, Direction)) != NULL) {
            // try only channels which are currently available
+           if (!PinPatch::ChildLock::IsChannelProtected(channel))
            if (GetDevice(channel, 0, true))
               break;
            n = channel->Number() + Direction;
@@ -658,6 +660,9 @@ bool cDevice::SwitchChannel(int Directio
 
 eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
 {
+  if (LiveView && PinPatch::ChildLock::IsChannelProtected(Channel))
+     return scrNotAvailable;
+
   if (LiveView) {
      StopReplay();
      DELETENULL(liveSubtitle);
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/menu.c vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/menu.c
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/menu.c 2010-02-01 14:54:39.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/menu.c 2010-02-01 15:00:48.000000000 +0000
@@ -32,6 +32,7 @@
 #include "transfer.h"
 #include "videodir.h"
 #include "menuorgpatch.h"
+#include "childlock.h"
 
 #define MAXWAIT4EPGINFO   3 // seconds
 #define MODETIMEOUT       3 // seconds
@@ -911,6 +912,10 @@ cMenuEditTimer::cMenuEditTimer(cTimer *T
      Add(new cMenuEditBitItem( tr("VPS"),          &data.flags, tfVps));
      Add(new cMenuEditIntItem( tr("Priority"),     &data.priority, 0, MAXPRIORITY));
      Add(new cMenuEditIntItem( tr("Lifetime"),     &data.lifetime, 0, MAXLIFETIME));
+
+     if (PinPatch::ChildLock::IsUnlocked())
+        Add(new cMenuEditBitItem(tr("Timer$Childlock"), &data.flags, tfProtected));
+
      Add(file = new cMenuEditStrItem( tr("File"),   data.file, sizeof(data.file)));
      SetFirstDayItem();
      }
@@ -2429,7 +2434,8 @@ void cMenuRecordings::Set(bool Refresh)
   for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
       if (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == FOLDERDELIMCHAR)) {
          cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
-         if (*Item->Text() && (!LastItem || strcmp(Item->Text(), LastItemText) != 0)) {
+         if ((*Item->Text() && (!LastItem || strcmp(Item->Text(), LastItemText) != 0))
+            && (!PinPatch::ChildLock::IsRecordingHidden(GetRecording(Item), Item->Name(), base, Item->IsDirectory()))) {
             Add(Item);
             LastItem = Item;
             free(LastItemText);
@@ -2479,6 +2485,9 @@ eOSState cMenuRecordings::Play(void)
 {
   cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
   if (ri) {
+     if (PinPatch::ChildLock::IsRecordingProtected(GetRecording(ri), ri->Name(), base, ri->IsDirectory()))
+        return osContinue;
+
      if (ri->IsDirectory())
         Open();
      else {
@@ -3501,6 +3510,8 @@ void cMenuMain::Set(void)
             }
          else if ((*i)->IsPluginItem()) {
             const char *item = (*i)->PluginMenuEntry();
+            cPlugin *plugin = cPluginManager::GetPlugin((*i)->PluginIndex());
+            if (!PinPatch::ChildLock::IsPluginHidden(plugin))
             if (item)
               osdItem = new cMenuPluginItem(hk(item), (*i)->PluginIndex());
             }
@@ -3515,9 +3526,13 @@ void cMenuMain::Set(void)
 
   // Basic menu items:
 
+  if (!PinPatch::ChildLock::IsMenuHidden("Schedule"))
   Add(new cOsdItem(hk(tr("Schedule")),   osSchedule));
+  if (!PinPatch::ChildLock::IsMenuHidden("Channels"))
   Add(new cOsdItem(hk(tr("Channels")),   osChannels));
+  if (!PinPatch::ChildLock::IsMenuHidden("Timers"))
   Add(new cOsdItem(hk(tr("Timers")),     osTimers));
+  if (!PinPatch::ChildLock::IsMenuHidden("Recordings"))
   Add(new cOsdItem(hk(tr("Recordings")), osRecordings));
 
   // Plugins:
@@ -3525,18 +3540,22 @@ void cMenuMain::Set(void)
   for (int i = 0;; i++) {
       cPlugin *p = cPluginManager::GetPlugin(i);
       if (p) {
+         if (!PinPatch::ChildLock::IsPluginHidden(p)) {
          const char *item = p->MainMenuEntry();
          if (item)
             Add(new cMenuPluginItem(hk(item), i));
          }
+         }
       else
          break;
       }
 
   // More basic menu items:
 
+  if (!PinPatch::ChildLock::IsMenuHidden("Setup"))
   Add(new cOsdItem(hk(tr("Setup")),      osSetup));
   if (Commands.Count())
+     if (!PinPatch::ChildLock::IsMenuHidden("Commands"))
      Add(new cOsdItem(hk(tr("Commands")),  osCommands));
 
   }
@@ -3617,6 +3636,11 @@ eOSState cMenuMain::ProcessKey(eKeys Key
   eOSState state = cOsdMenu::ProcessKey(Key);
   HadSubMenu |= HasSubMenu();
 
+  cOsdItem* item = Get(Current());
+  if (item && item->Text() && state != osContinue && state != osUnknown && state != osBack)
+     if (PinPatch::ChildLock::IsMenuProtected(item->Text()))
+        return osContinue;
+
   cOsdMenu *menu = NULL;
   switch (state) {
     case osSchedule:
@@ -3663,6 +3687,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key
                          if (item) {
                             cPlugin *p = cPluginManager::GetPlugin(item->PluginIndex());
                             if (p) {
+                               if (!PinPatch::ChildLock::IsPluginProtected(p)) {
                                cOsdObject *menu = p->MainMenuAction();
                                if (menu) {
                                   if (menu->IsMenu())
@@ -3673,6 +3698,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key
                                      }
                                   }
                                }
+                               }
                             }
                          state = osEnd;
                        }
@@ -3881,6 +3907,7 @@ cChannel *cDisplayChannel::NextAvailable
            Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
            if (!Channel && Setup.ChannelsWrap)
               Channel = Direction > 0 ? Channels.First() : Channels.Last();
+           if (!PinPatch::ChildLock::IsChannelProtected(Channel))
            if (Channel && !Channel->GroupSep() && cDevice::GetDevice(Channel, 0, true))
               return Channel;
            }
@@ -4513,6 +4540,7 @@ bool cRecordControls::Start(cTimer *Time
            for (int i = 0; i < MAXRECORDCONTROLS; i++) {
                if (!RecordControls[i]) {
                   RecordControls[i] = new cRecordControl(device, Timer, Pause);
+                  PinPatch::ChildLock::NotifyRecordingStart(RecordControls[i]->FileName());
                   return RecordControls[i]->Process(time(NULL));
                   }
                }
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/po/de_DE.po vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/po/de_DE.po
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/po/de_DE.po 2010-02-01 13:57:45.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/po/de_DE.po 2010-02-01 14:56:26.000000000 +0000
@@ -635,6 +635,9 @@ msgstr "Priorität"
 msgid "Lifetime"
 msgstr "Lebensdauer"
 
+msgid "Timer$Childlock"
+msgstr "Gesichert"
+
 msgid "File"
 msgstr "Datei"
 
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/po/fr_FR.po vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/po/fr_FR.po
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/po/fr_FR.po 2010-02-01 13:57:45.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/po/fr_FR.po 2010-02-01 14:56:26.000000000 +0000
@@ -641,6 +641,9 @@ msgstr "Priorité"
 msgid "Lifetime"
 msgstr "Durée de vie"
 
+msgid "Timer$Childlock"
+msgstr "Adulte"
+
 msgid "File"
 msgstr "Fichier"
 
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/timers.c vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/timers.c
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/timers.c 2010-01-16 11:18:53.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/timers.c 2010-02-01 14:56:26.000000000 +0000
@@ -16,6 +16,7 @@
 #include "recording.h"
 #include "remote.h"
 #include "status.h"
+#include "childlock.h"
 
 #define VFAT_MAX_FILENAME 40 // same as MAX_SUBTITLE_LENGTH in recording.c
 
@@ -27,6 +28,7 @@
 
 cTimer::cTimer(bool Instant, bool Pause, cChannel *Channel)
 {
+  aux = NULL;
   startTime = stopTime = 0;
   lastSetEvent = 0;
   recording = pending = inVpsMargin = false;
@@ -47,7 +49,6 @@ cTimer::cTimer(bool Instant, bool Pause,
   priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
   lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
   *file = 0;
-  aux = NULL;
   event = NULL;
   if (Instant && channel)
      snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", *Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
@@ -60,6 +61,7 @@ cTimer::cTimer(bool Instant, bool Pause,
 
 cTimer::cTimer(const cEvent *Event)
 {
+  aux = NULL;
   startTime = stopTime = 0;
   lastSetEvent = 0;
   recording = pending = inVpsMargin = false;
@@ -93,8 +95,8 @@ cTimer::cTimer(const cEvent *Event)
      file[Utf8SymChars(file, VFAT_MAX_FILENAME)] = 0;
      dsyslog("timer file name truncated to '%s'", file);
      }
-  aux = NULL;
   event = NULL; // let SetEvent() be called to get a log message
+  PinPatch::ChildLock::NotifyTimerCreation(this, Event);
 }
 
 cTimer::cTimer(const cTimer &Timer)
@@ -269,6 +271,8 @@ cString cTimer::PrintFirstDay(void) cons
   return ""; // not NULL, so the caller can always use the result
 }
 
+#define AUX_STR_PROTECTED "<pin-plugin><protected>yes</protected></pin-plugin>"
+
 bool cTimer::Parse(const char *s)
 {
   char *channelbuffer = NULL;
@@ -323,6 +327,8 @@ bool cTimer::Parse(const char *s)
         result = false;
         }
      }
+  if (aux && strstr(aux, AUX_STR_PROTECTED))
+     SetFlags(tfProtected);
   free(channelbuffer);
   free(daybuffer);
   free(filebuffer);
@@ -592,6 +598,26 @@ void cTimer::SetPriority(int Priority)
 void cTimer::SetFlags(uint Flags)
 {
   flags |= Flags;
+
+  char* tmp = NULL;
+  char* position;
+
+  if (HasFlags(tfProtected)) {
+     if (!aux || !strstr(aux, AUX_STR_PROTECTED)) {
+        if (aux) {
+           tmp = strdup(aux);
+           free(aux);
+           }
+        asprintf(&aux,"%s%s", tmp ? tmp : "", AUX_STR_PROTECTED);
+        }
+     }
+  else if (aux && (position = strstr(aux, AUX_STR_PROTECTED))) {
+     asprintf(&tmp, "%.*s%s", position-aux, aux, position+strlen(AUX_STR_PROTECTED));
+     free(aux);
+     aux = strdup(tmp);
+     }
+
+  free(tmp);
 }
 
 void cTimer::ClrFlags(uint Flags)
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/timers.h vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/timers.h
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/timers.h 2008-02-16 14:33:23.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/timers.h 2010-02-01 14:56:26.000000000 +0000
@@ -20,6 +20,7 @@ enum eTimerFlags { tfNone      = 0x0000,
                    tfInstant   = 0x0002,
                    tfVps       = 0x0004,
                    tfRecording = 0x0008,
+                   tfProtected = 0x8000,
                    tfAll       = 0xFFFF,
                  };
 enum eTimerMatch { tmNone, tmPartial, tmFull };
diff -Naurp vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/vdr.c vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/vdr.c
--- vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks/vdr.c 2010-01-31 11:14:40.000000000 +0000
+++ vdr-1.7.12-liemikuutio-ttxtsubs-menuorg-MainMenuHooks-pin/vdr.c 2010-02-01 14:56:26.000000000 +0000
@@ -63,6 +63,7 @@
 #include "timers.h"
 #include "tools.h"
 #include "transfer.h"
+#include "childlock.h"
 #include "videodir.h"
 
 #define MINCHANNELWAIT        10 // seconds to wait between failed channel switchings
@@ -928,6 +929,7 @@ int main(int argc, char *argv[])
         cOsdObject *Interact = Menu ? Menu : cControl::Control();
         eKeys key = Interface->GetKey(!Interact || !Interact->NeedsFastResponse());
         if (ISREALKEY(key)) {
+           PinPatch::ChildLock::NotifyUserAction(key, Interact);
            EITScanner.Activity();
            // Cancel shutdown countdown:
            if (ShutdownHandler.countdown)
@@ -1000,10 +1002,12 @@ int main(int argc, char *argv[])
                      cControl::Control()->Hide();
                   cPlugin *plugin = cPluginManager::GetPlugin(PluginName);
                   if (plugin) {
+                     if (!PinPatch::ChildLock::IsPluginProtected(plugin)) {
                      Menu = plugin->MainMenuAction();
                      if (Menu)
                         Menu->Show();
                      }
+                     }
                   else
                      esyslog("ERROR: unknown plugin '%s'", PluginName);
                   }
@@ -1217,9 +1221,11 @@ int main(int argc, char *argv[])
              // Instant resume of the last viewed recording:
              case kPlay:
                   if (cReplayControl::LastReplayed()) {
+                     if (!PinPatch::ChildLock::IsRecordingProtected(0, cReplayControl::LastReplayed(), 0, false)) {
                      cControl::Shutdown();
                      cControl::Launch(new cReplayControl);
                      }
+                     }
                   break;
              default:    break;
              }
__________________________________________

"...ich schreibe 80% meiner Beiträge aus dem Kopf ... bitte nicht schlagen wenn mal ein Path nicht passt :) ..."

MFG Christian

Nokia Sat DBox2 + Multicam

Hardware VDR: ASUS E35M1-I Deluxe, 4GB RAM, ATI 6XXX onboard, TT S2-6400 FF, Samsung 500GB 2,5"


[1] 2 >>> Archiv / MLD 3.x / General / Mld 3.x Getestet
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.