diff -Nru vdr-plugin-graphlcd/state.c vdr-plugin-graphlcd.uha/state.c
--- vdr-plugin-graphlcd/state.c	2010-03-05 16:50:42.000000000 +0100
+++ vdr-plugin-graphlcd.uha/state.c	2010-03-05 20:07:53.000000000 +0100
@@ -16,6 +16,7 @@
 
 #include <vdr/eitscan.h>
 #include <vdr/i18n.h>
+#include <vdr/plugin.h>
 
 #include "compat.h"
 
@@ -662,6 +663,7 @@
 
 void cGraphLCDState::GetProgramme()
 {
+    bool ptitle = false;
     mutex.Lock();
 #if VDRVERSNUM < 10300
     const cEventInfo * present = NULL, * following = NULL;
@@ -712,8 +714,10 @@
                 {
                     event.presentTime = present->StartTime();
                     event.presentTitle = "";
-                    if (!isempty(present->Title()))
+                    if (!isempty(present->Title())) {
                         event.presentTitle = present->Title();
+                        ptitle = true;
+                        }
                     event.presentSubtitle = "";
                     if (!isempty(present->ShortText()))
                         event.presentSubtitle = present->ShortText();
@@ -731,6 +735,35 @@
             }
         }
     }
+    // get&display Radiotext
+    cPlugin *p;
+    p = cPluginManager::CallFirstService("RadioTextService-v1.0", NULL);
+    if (p) {
+       RadioTextService_v1_0 rtext;
+       if (cPluginManager::CallFirstService("RadioTextService-v1.0", &rtext)) {
+          if (rtext.rds_info == 2 && strstr(rtext.rds_title, "---") == NULL) {
+             if (ptitle) {
+                char rtstr[140];
+                sprintf(rtstr, "%02d:%02d  %s | %s", rtext.title_start->tm_hour, rtext.title_start->tm_min, rtext.rds_title, rtext.rds_artist);
+                event.presentSubtitle = compactspace(rtstr);
+                }
+             else {
+                char title[65], artist[65];
+                strcpy(title, rtext.rds_title);
+                strcpy(artist, rtext.rds_artist);
+                event.presentTitle = compactspace(title);
+                event.presentSubtitle = compactspace(artist);
+                }
+             }
+          else if (rtext.rds_info > 0) {
+             char rtstr[65];
+             strcpy(rtstr, rtext.rds_text);
+             if (!ptitle)
+                event.presentTitle = "..";
+             event.presentSubtitle = compactspace(rtstr);
+             }
+          }
+       }
 #endif
     mutex.Unlock();
 }
diff -Nru vdr-plugin-graphlcd/state.h vdr-plugin-graphlcd.uha/state.h
--- vdr-plugin-graphlcd/state.h	2010-03-05 16:50:42.000000000 +0100
+++ vdr-plugin-graphlcd.uha/state.h	2010-03-05 16:55:29.000000000 +0100
@@ -131,4 +131,14 @@
     tVolumeState GetVolumeState();
 };
 
+// Radiotext
+struct RadioTextService_v1_0 {
+  int rds_info;
+  int rds_pty;
+  char *rds_text;
+  char *rds_title;
+  char *rds_artist;
+  struct tm *title_start;
+};
+
 #endif

