You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

21

Thursday, April 26th 2012, 9:51am

Moin!

Da sind sicherlich noch ein paar Schritte nötig.
  • Trenner verschieben
  • Trenner löschen
  • Trenner umbenennen

Um den ersten Punkt kann man allerdings herumarbeiten, wenn man einfach die Kanäle verschiebt, dann "verschiebt" sich der Trenner ja indirekt.

Ich hoffe, da Woche um Woche immer einen kleinen Patch nachliefern zu können.

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

22

Thursday, April 26th 2012, 9:54am

Wenn der Kanal am Ende der >100 Einträge umfassenden Liste landet, dann ist es nicht ganz so einfach, den mit dem Trick über Kanäle hin und herschieben irgendwie an den Anfang zu bekommen.

IMHO wäre es nicht verkehrt wenn du dich auch mal mit Klaus absprichst, wie er sich sowas vorstellen kann. Nur ein Patch, der zeitnah in den VDR übernommen wird, ist ein guter Patch.

gda

Im Forum Zuhause

Posts: 13,390

Location: HH

  • Send private message

23

Thursday, April 26th 2012, 10:05am

IMHO wäre es nicht verkehrt wenn du dich auch mal mit Klaus absprichst, wie er sich sowas vorstellen kann. Nur ein Patch, der zeitnah in den VDR übernommen wird, ist ein guter Patch.

??? Ist doch schon seit gestern in der Mailing-Liste

Gerald

HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 12.04.2, Plex Media Server
Samsung UE55H6470

24

Thursday, April 26th 2012, 10:09am

Ist mir aufgefallen. Hast aber Recht. Prinzipiell könnte Klaus bereits jetzt Stellung zu dieser ersten Änderung nehmen.

Eigentlich ist die Diskussion hier nur eine Folge eines von vielen Problemen, die dadurch auftreten, dass der VDR die Trenner zwar unterstützt, aber über keine eingebaute Funktion ändern kann.

Neben der Änderung über SVDRP wäre nämlich meiner Meinung nach auch Ändern via OSD ein wichtiger Punkt. Die Dinger sollten dort auswählbar und markierbar sein, dass man sie wie Kanäle schieben kann.

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

25

Thursday, April 26th 2012, 11:01am

Moin!

Probier doch einfach mal, einen Patch zu erstellen.
Ich hab einen Abend pro Woche Zeit für ein bisschen vdr-Programmieren, deshalb wird es von meiner Seite aus etwas dauern... :)
Und deshalb werde ich das Gruppentrenner-Problem in den kleinen Schritten angehen, ist ja zum Glück gut zerlegbar.
Und kleine, übersichtliche Patches haben eher die Chance, aufgenommen zu werden.

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

kls

Master

Posts: 2,689

Location: Mettenheim

  • Send private message

26

Thursday, April 26th 2012, 12:26pm

Ist mir aufgefallen. Hast aber Recht. Prinzipiell könnte Klaus bereits jetzt Stellung zu dieser ersten Änderung nehmen.

Eigentlich ist die Diskussion hier nur eine Folge eines von vielen Problemen, die dadurch auftreten, dass der VDR die Trenner zwar unterstützt, aber über keine eingebaute Funktion ändern kann.

Neben der Änderung über SVDRP wäre nämlich meiner Meinung nach auch Ändern via OSD ein wichtiger Punkt. Die Dinger sollten dort auswählbar und markierbar sein, dass man sie wie Kanäle schieben kann.

Ich würde da nicht zu viel Energie reinstecken, denn im Zweifelsfall würde ich die Trenner lieber ganz loswerden ;-)
Sie waren ja auch ursprünglich nicht vorgesehen, aber irgendwer hat sie sich halt eingebildet...

Die "richtige" Lösung werden benutzerdefinierte Favoritenlisten sein - nach Version 2.0...

Klaus
Gib CI+/HD+ keine Chance! Lasst diese Pest am ausgestreckten Arm verhungern!
Wer für sowas bezahlt macht sich zum Totengräber von Projekten wie VDR!
Die Wahrheit ueber HD Plus
CI-Plus -- Das trojanische Pferd im Wohnzimmer

27

Thursday, April 26th 2012, 12:31pm

Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

28

Thursday, April 26th 2012, 12:41pm

Moin!

Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?

Einfach mal abwarten, bis 2.0 veröffentlicht wurde. Vorher wird da sicherlich nicht viel drüber nachgedacht werden.

@kls:
Ok, dann warte ich ab bzw. schau mal, was mir da so in Richtung Favoritenliste einfällt. Vielleicht kann ich ja da zuarbeiten.

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

kls

Master

Posts: 2,689

Location: Mettenheim

  • Send private message

29

Thursday, April 26th 2012, 1:02pm

Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?

Momentan ist nur Version 2.0 ein Thema - alles andere wird von meinen "Scheuklappen" verdeckt... ,-)

Klaus
Gib CI+/HD+ keine Chance! Lasst diese Pest am ausgestreckten Arm verhungern!
Wer für sowas bezahlt macht sich zum Totengräber von Projekten wie VDR!
Die Wahrheit ueber HD Plus
CI-Plus -- Das trojanische Pferd im Wohnzimmer

kls

Master

Posts: 2,689

Location: Mettenheim

  • Send private message

30

Thursday, April 26th 2012, 1:05pm

Moin!

Soll heißen: Mehr als eine Favoritenliste? Also weiterhin nach Sparten sortierbar?

Einfach mal abwarten, bis 2.0 veröffentlicht wurde. Vorher wird da sicherlich nicht viel drüber nachgedacht werden.

@kls:
Ok, dann warte ich ab bzw. schau mal, was mir da so in Richtung Favoritenliste einfällt. Vielleicht kann ich ja da zuarbeiten.

Soll ich dann deinen Patch aus der ML noch reinnehmen?
Grundsätzlich habe ich nichts gegen diese kleine Änderung, aber ich möchte nicht, daß da jetzt der große Rundumschlag mit aufwendiger Verwaltung der Trenner kommt.

Klaus
Gib CI+/HD+ keine Chance! Lasst diese Pest am ausgestreckten Arm verhungern!
Wer für sowas bezahlt macht sich zum Totengräber von Projekten wie VDR!
Die Wahrheit ueber HD Plus
CI-Plus -- Das trojanische Pferd im Wohnzimmer

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

31

Thursday, April 26th 2012, 3:21pm

Moin!

Ich denke, der kleine Patch tut nicht weh und hilft, wenn man eine Kanalliste von extern neu einpflegt.
Ich werde dann aber nichts an MOVC, MODC und DELC tun.

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

kls

Master

Posts: 2,689

Location: Mettenheim

  • Send private message

32

Thursday, April 26th 2012, 3:58pm


Ich denke, der kleine Patch tut nicht weh und hilft, wenn man eine Kanalliste von extern neu einpflegt.

Hmmm, bei näherer Überlegung wäre es aber vermutlich gar nicht so geschickt, das jetzt einzubauen, wenn später die Trenner verschwinden sollen.
Also vielleicht erstmal doch nicht...

Klaus
Gib CI+/HD+ keine Chance! Lasst diese Pest am ausgestreckten Arm verhungern!
Wer für sowas bezahlt macht sich zum Totengräber von Projekten wie VDR!
Die Wahrheit ueber HD Plus
CI-Plus -- Das trojanische Pferd im Wohnzimmer

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

33

Thursday, April 26th 2012, 4:04pm

Moin!

Kein Problem! :)

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

rudirabbit

Professional

  • "rudirabbit" started this thread

Posts: 1,358

Occupation: Kfz Elektroniker

  • Send private message

34

Thursday, April 26th 2012, 6:55pm

Schade - wobei ich dies natürlich verstehe.
Wenn kls eine Favoritenliste in Planung hat :tup , dann wären jetzt Trenner Algos einzupflegen umsonst.

Will aber vorerst weiterbasteln ..
Für meine Bedürfnisse hätte ich nur das Löschen eines Trenners gebraucht.
Ich denke das ginge mit DELC in der svdrp.c.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void cSVDRP::CmdDELC(const char *Option)
{
  if (*Option) {
 if (isnumber(Option)) {
    if (!Channels.BeingEdited()) {
       cChannel *channel = Channels.GetByNumber(strtol(Option, NULL, 10));
       if (channel) {
          for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
              if (timer->Channel() == channel) {
                 Reply(550, "Channel \"%s\" is in use by timer %d", Option, timer->Index() + 1);
                 return;
                 }
              }
          int CurrentChannelNr = cDevice::CurrentChannel();
          cChannel *CurrentChannel = Channels.GetByNumber(CurrentChannelNr);
          if (CurrentChannel && channel == CurrentChannel) {
             int n = Channels.GetNextNormal(CurrentChannel->Index());
             if (n < 0)
                n = Channels.GetPrevNormal(CurrentChannel->Index());
             CurrentChannel = Channels.Get(n);
             CurrentChannelNr = 0; // triggers channel switch below
             }
          Channels.Del(channel);
          Channels.ReNumber();
          Channels.SetModified(true);
          isyslog("channel %s deleted", Option);
          if (CurrentChannel && CurrentChannel->Number() != CurrentChannelNr) {
             if (!cDevice::PrimaryDevice()->Replaying() || cDevice::PrimaryDevice()->Transferring())
                Channels.SwitchTo(CurrentChannel->Number());
             else
                cDevice::SetCurrentChannel(CurrentChannel);
             }
          Reply(250, "Channel \"%s\" deleted", Option);
          }
       else
          Reply(501, "Channel \"%s\" not defined", Option);
       }
    else
       Reply(550, "Channels are being edited - try again later");
    }
 else
    Reply(501, "Error in channel number \"%s\"", Option);
 }
  else
 Reply(501, "Missing channel number");
}

Ich verstehe das als C++ Dau so:
Diese Funktion erwartet zum Löschen eine Kanalnummer, was letztendlich in Channels.Del(channel); passiert.
Diese Funktion erwartet aber auch eine Kanalnummer, somit müsste man auch dort was ändern.
Also wird der Aufwand wohl zu groß werden ?
VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

35

Thursday, April 26th 2012, 7:25pm

Moin!

Am Anfang müsste man gucken, ob es einen Gruppentrenner mit dem übergebenen Namen gibt (statt isnumber) und dann das passende cChannel-Objekt heraussuchen und löschen.
Ist eigentlich nicht so schlimm (auf den ersten Blick), die Details sind aber manchmal fiese... :)

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

36

Thursday, April 26th 2012, 7:45pm

Moin!

Na gut, hier ist eine Lösung, damit du was zum Basteln hast... :)

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
diff --git a/svdrp.c b/svdrp.c
index 01366dd..794e6ff 100644
--- a/svdrp.c
+++ b/svdrp.c
@@ -614,9 +614,24 @@ void cSVDRP::CmdCLRE(const char *Option)
 void cSVDRP::CmdDELC(const char *Option)
 {
   if (*Option) {
-     if (isnumber(Option)) {
+     if (isnumber(Option) || (Option[0] == ':')) {
         if (!Channels.BeingEdited()) {
-           cChannel *channel = Channels.GetByNumber(strtol(Option, NULL, 10));
+           cChannel *channel = NULL;
+           if (isnumber(Option))
+              channel = Channels.GetByNumber(strtol(Option, NULL, 10));
+           else if (Option[0] == ':') {
+              int groupNr = -1;
+              do {
+                 groupNr = Channels.GetNextGroup(groupNr);
+                 if (groupNr < 0)
+                    break;
+                 cChannel *c = Channels.Get(groupNr);
+                 if (c && c->GroupSep() && (strcmp(c->Name(), Option + 1) == 0)) {
+                    channel = c;
+                    break;
+                    }
+                 } while (true);
+              }
            if (channel) {
               for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
                   if (timer->Channel() == channel) {
@@ -655,7 +670,7 @@ void cSVDRP::CmdDELC(const char *Option)
         Reply(501, "Error in channel number \"%s\"", Option);
      }
   else
-     Reply(501, "Missing channel number");
+     Reply(501, "Missing channel number or group separator");
 }
 
 void cSVDRP::CmdDELR(const char *Option)

Ist jetzt nicht besonders schön, aber ist ja auch nur zum Spaß...

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |

rudirabbit

Professional

  • "rudirabbit" started this thread

Posts: 1,358

Occupation: Kfz Elektroniker

  • Send private message

37

Friday, April 27th 2012, 7:59pm

Danke dir mini73 !
Was du so schnell aus der Hüfte schiesst :wow

Ich habe den Code als Pascal Mensch sogar in etwa verstanden.
Wenn es an die Objecte und deren Funktionen geht, fehlt mir einfach das Verständnis wie der VDR aufgebaut ist.
Was du als nicht besonders schön bezeichnest, ist wohl das Beenden der Schleife mit einem Break - damit kann ich leben ;D
VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

This post has been edited 1 times, last edit by "rudirabbit" (Apr 27th 2012, 8:06pm)


mini73

Moderator

Posts: 6,384

Location: Flensburg

  • Send private message

38

Saturday, April 28th 2012, 10:22am

Moin!

Nö, das break ist schon in Ordnung und ganz normales Programmieren. :)
Aber es ist sicherlich noch etwas Optimierungspotenzial vorhanden. Spielt ja aber keine Rolle.
Es wird z.B. nicht verhindert, dass mehrere Separatoren mit gleichem Namen angelegt werden können.
Beim Löschen wird dann immer der erste mit gleichem Namen gelöscht usw.

Lars.

meine Signatur

vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
vdr: yaVDR 0.2/pvr350 @ Sempron 64 LE-1200, MSI K9MM-V, 1x PVR350, 2x Satelco EasyWatch DVB-C
hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
Plugins: | avahi4vdr | dbus2vdr | dynamite | noepg | pvrinput | sundtek |
pre-alpha Plugins: | ddci CI-Support für DD/L4M (siehe Post 1048374) |