diff options
Diffstat (limited to 'patch')
-rw-r--r-- | patch/epgsearch-0.9.24.diff | 71 | ||||
-rw-r--r-- | patch/extrecmenu-1.1.diff | 20 | ||||
-rw-r--r-- | patch/mailbox-0.5.0-mailcount.diff | 78 | ||||
-rw-r--r-- | patch/mp3-0.9.15pre14_graphtft-cover-file.diff | 119 | ||||
-rw-r--r-- | patch/muggle-0.0.8_graphtft_cover_file.diff | 103 | ||||
-rw-r--r-- | patch/remotetimers.patch | 52 | ||||
-rw-r--r-- | patch/vdr-2.2.0_graphtftng.diff | 157 | ||||
-rw-r--r-- | patch/vdr-2.3.1_graphtftng.diff | 157 | ||||
-rw-r--r-- | patch/xsnow-gtftng.patch | 66 |
9 files changed, 823 insertions, 0 deletions
diff --git a/patch/epgsearch-0.9.24.diff b/patch/epgsearch-0.9.24.diff new file mode 100644 index 0000000..b1e2f25 --- /dev/null +++ b/patch/epgsearch-0.9.24.diff @@ -0,0 +1,71 @@ +--- ../plain.0/epgsearch-0.9.24//menu_main.c 2008-04-13 20:53:44.000000000 +0200 ++++ menu_main.c 2008-09-27 14:05:23.000000000 +0200 +@@ -73,6 +73,23 @@ + } + } + ++#ifdef USE_GRAPHTFT ++void cMenuSearchMain::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) ++ { ++ int i = 0; ++ ++ for (cOsdItem *item = First(); item; item = Next(item)) ++ cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : ++ ((cMenuMyScheduleItem*)item)->event, ++ item->Text(), i++, Count()); ++ } ++} ++#endif /* GRAPHTFT */ ++ + cMenuSearchMain::~cMenuSearchMain() + { + cMenuWhatsOnSearch::ScheduleChannel(); // makes sure any posted data is cleared +--- ../plain.0/epgsearch-0.9.24//menu_main.h 2008-04-13 20:53:43.000000000 +0200 ++++ menu_main.h 2008-09-09 21:43:40.000000000 +0200 +@@ -57,6 +57,7 @@ + void UpdateCurrent(); + #ifdef USE_GRAPHTFT + virtual const char* MenuKind() { return "MenuEpgsSchedule"; } ++ virtual void Display(void); + #endif + }; + +--- ../plain.0/epgsearch-0.9.24//menu_whatson.c 2008-04-22 19:18:24.000000000 +0200 ++++ menu_whatson.c 2008-09-27 14:05:47.000000000 +0200 +@@ -296,7 +296,22 @@ + if (currentShowMode > showNext) return "MenuEpgsWhatsOnElse"; + else return "MenuWhatsOnElse"; + } +-#endif ++ ++void cMenuWhatsOnSearch::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) ++ { ++ int i = 0; ++ ++ for (cOsdItem *item = First(); item; item = Next(item)) ++ cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : ++ ((cMenuMyScheduleItem*)item)->event, ++ item->Text(), i++, Count()); ++ } ++} ++#endif /* GRAPHTFT */ + + int cMenuWhatsOnSearch::GetTab(int Tab) + { +--- ../plain.0/epgsearch-0.9.24//menu_whatson.h 2008-04-13 20:53:42.000000000 +0200 ++++ menu_whatson.h 2008-09-09 21:43:12.000000000 +0200 +@@ -79,6 +79,7 @@ + void UpdateCurrent(); + #ifdef USE_GRAPHTFT + virtual const char* MenuKind(); ++ virtual void Display(void); + #endif + }; diff --git a/patch/extrecmenu-1.1.diff b/patch/extrecmenu-1.1.diff new file mode 100644 index 0000000..fb71096 --- /dev/null +++ b/patch/extrecmenu-1.1.diff @@ -0,0 +1,20 @@ +--- ../plain.0/extrecmenu-1.1//./mymenurecordings.c 2007-10-24 19:29:46.000000000 +0200 ++++ ./mymenurecordings.c 2007-11-18 18:14:50.000000000 +0100 +@@ -51,6 +54,10 @@ + { + cOsdMenu::Display(); + ++#ifdef USE_GRAPHTFT ++ cStatus::MsgOsdSetRecording(recording); ++#endif ++ + if(mysetup.UseVDRsRecInfoMenu) + { + DisplayMenu()->SetRecording(recording); +@@ -93,6 +100,7 @@ + text << tr("Lifetime") << ": " << recording->lifetime << "\n"; + + DisplayMenu()->SetText(text.str().c_str(),false); ++ cStatus::MsgOsdTextItem(text.str().c_str()); + } + } diff --git a/patch/mailbox-0.5.0-mailcount.diff b/patch/mailbox-0.5.0-mailcount.diff new file mode 100644 index 0000000..0f13dab --- /dev/null +++ b/patch/mailbox-0.5.0-mailcount.diff @@ -0,0 +1,78 @@ +--- ../plain.0/mailbox-0.5.0/AxMailBoxServiceTypes.h 2006-03-03 15:52:16.000000000 +0100 ++++ AxMailBoxServiceTypes.h 2007-11-17 15:43:24.000000000 +0100 +@@ -31,6 +31,7 @@ + // Service-Names (ID) + //============================================================================= + #define MailBox_HasNewMail_v1_0_NAME "MailBox-HasNewMail-1.0" ++#define MailBox_GetTotalUnseen_v1_0_NAME "MailBox-GetTotalUnseen-1.0" + + //============================================================================= + // service MailBox-HasNewMail-1.0 +--- ../plain.0/mailbox-0.5.0/AxMailChecker.cpp 2006-06-09 19:16:00.000000000 +0200 ++++ AxMailChecker.cpp 2007-11-17 15:40:47.000000000 +0100 +@@ -209,6 +209,7 @@ + unsigned long aSumUnread = 0; + unsigned long aSumSIF = 0; + bool fAbort = false; ++ int unseen = 0; + + //----- iterate over Mail-Accounts ----- + for (Mail::MailBoxList::const_iterator anIter = myPlugin->getMailBoxCltn().begin(); +@@ -230,6 +231,7 @@ + anAppendix = anAppendix + std::string("/"); + } // if + anAppendix = anAppendix + std::string(itoa(aMB->getCurrentFolder()->getCountUnseen())); ++ unseen += aMB->getCurrentFolder()->getCountUnseen(); + } // if + + if ((aMB->getSetup().getBGCheckMode() & Mail::BG_SIF_MASK) == Mail::BG_SIF_ON) +@@ -262,6 +264,7 @@ + } // if + + myPlugin->setMainMenuAppendix(aSumSIF != 0, anAppendix); ++ myPlugin->setTotalUnseen(unseen); + + fFirst = false; + aTimeOutMS = myPluginSettings.BGCheckDelay * 60 * 1000; +--- ../plain.0/mailbox-0.5.0/AxPluginMailBox.cpp 2007-10-21 10:43:27.000000000 +0200 ++++ AxPluginMailBox.cpp 2007-11-17 16:30:27.000000000 +0100 +@@ -108,6 +108,7 @@ + , myInitialMailBox(0) + , myHasNewMail (false) + , myMainMenuEntryAppendix("") ++ , totalUnseen(0) + { + #if HAVE_AXLIB + Ax::Tools::Trace::setLogFunc(syslog_with_tid); +@@ -426,6 +427,11 @@ + wsdebug(("- AxPluginMailBox::Service() Id: '%s' supported", Id)); + } // if + } ++ else if (strcmp(Id, MailBox_GetTotalUnseen_v1_0_NAME) == 0) ++ { ++ if (Data != 0) ++ *((int*)Data) = totalUnseen; ++ } + else + { + fHandled = false; +--- ../plain.0/mailbox-0.5.0/AxPluginMailBox.h 2006-05-01 18:49:21.000000000 +0200 ++++ AxPluginMailBox.h 2007-11-17 15:41:51.000000000 +0100 +@@ -497,6 +497,8 @@ + */ + void setMainMenuAppendix(bool fHasNewMail = false, const std::string &theMenuText = std::string("")); + ++ void setTotalUnseen(int i) { totalUnseen = i; } ++ + //------------------------------------------------------------------------- + // copyMainMenuEntry() + //------------------------------------------------------------------------- +@@ -552,7 +554,7 @@ + bool myHasNewMail; + std::string myMainMenuEntryAppendix; + cMutex myMainMenuEntryAppendixMutex; +- ++ int totalUnseen; + }; // class AxPluginMailBox + + #endif // __AxPluginMaiBox_H__ diff --git a/patch/mp3-0.9.15pre14_graphtft-cover-file.diff b/patch/mp3-0.9.15pre14_graphtft-cover-file.diff new file mode 100644 index 0000000..7e22852 --- /dev/null +++ b/patch/mp3-0.9.15pre14_graphtft-cover-file.diff @@ -0,0 +1,119 @@ +--- ../mp3-0.9.15pre14.save//player-mp3.c 2006-11-04 15:44:33.000000000 +0100 ++++ player-mp3.c 2007-07-01 16:53:27.000000000 +0200 +@@ -1583,6 +1583,7 @@ + cNormalize norm; + bool haslevel=false; + const unsigned char *p=0; ++ const char *coverName=0; + int pc=0, readindex=0; + bool imageValid=true; + int imageCheck=0; +@@ -1751,6 +1752,16 @@ + if(si->HasInfo()) + total=SecondsToFrames(si->Total); + } ++ // First remove the old cover, when exist ++ RemoveOldCover(); ++ coverName=GetCover(playing->FullPath()); ++ if(coverName) { ++ // if a cover exist, copy it to the /tmp directory ++ if(CopyCover(coverName)){ ++ d(isyslog("mp3: found and copy cover %s to /tmp/graphTFT.cover",coverName)); ++ } ++ } ++ + d(printf("mp3: isStream=%d levelgood=%d haslevel=%d\n",isStream,levelgood,haslevel)) + output->Init(); + level.Init(); +@@ -2027,3 +2038,79 @@ + Speed=-1; + return true; + } ++ ++char *cMP3Player::GetCover(const char* fullname) ++{ ++ static char imageFile[1024]; ++ FILE* fp; ++ ++ // track cover file ? ++ ++ strcpy(imageFile, fullname); ++ strcpy(strrchr(imageFile, '.'), ".jpg"); ++ ++ d(isyslog("cov: Checking '%s' for track cover file", imageFile)); ++ ++ if ((fp = fopen(imageFile, "rb"))) ++ { ++ fclose(fp); ++ d(isyslog("cov: Track specific cover file '%s' found", basename(imageFile))); ++ ++ return imageFile; ++ } ++ ++ // directory cover file ? ++ ++ strcpy(strrchr(imageFile, '/'), "/Cover.jpg"); ++ ++ d(isyslog("cov: Checking '%s' for directory cover file ", imageFile)); ++ ++ if ((fp = fopen(imageFile, "rb"))) ++ { ++ fclose (fp); ++ d(isyslog("cov: Cover file Cover.jpg found")); ++ ++ return imageFile; ++ } ++ ++ strcpy(strrchr(imageFile, '/'), "/cover.jpg"); ++ ++ d(isyslog("cov: Checking '%s' for directory cover file ", imageFile)); ++ ++ if ((fp = fopen(imageFile, "rb"))) ++ { ++ fclose (fp); ++ d(isyslog("cov: Cover file cover.jpg found")); ++ ++ return imageFile; ++ } ++ ++ d(isyslog("cov: No cover found :(")); ++ ++ return 0; ++} ++ ++bool cMP3Player::CopyCover(const char* coverName) ++{ ++ char commandString[1024]; ++ bool result = false; ++ int ret = false; ++ ++ sprintf((char*)commandString, "echo %s > /tmp/graphTFT.cover", coverName); ++ ret = system((const char*)commandString); ++ ++ if (ret) result = true; ++ ++ return result; ++} ++ ++void cMP3Player::RemoveOldCover(void) ++{ ++ FILE* fp; ++ ++ if ((fp = fopen("/tmp/graphTFT.cover", "rb"))) ++ { ++ fclose (fp); ++ system("rm /tmp/graphTFT.cover"); ++ } ++} +--- ../mp3-0.9.15pre14.save//player-mp3.h 2006-11-04 15:44:33.000000000 +0100 ++++ player-mp3.h 2007-07-01 16:05:48.000000000 +0200 +@@ -177,6 +177,9 @@ + virtual bool GetReplayMode(bool &Play, bool &Forward, int &Speed); + bool Active(void) { return active; } + bool IsStream(void) { return isStream; } ++ char *GetCover(const char *maskFilename); ++ bool CopyCover(const char *coverName); ++ void RemoveOldCover(void); + }; + + #endif //___DVB_MP3_H diff --git a/patch/muggle-0.0.8_graphtft_cover_file.diff b/patch/muggle-0.0.8_graphtft_cover_file.diff new file mode 100644 index 0000000..22f8302 --- /dev/null +++ b/patch/muggle-0.0.8_graphtft_cover_file.diff @@ -0,0 +1,103 @@ +diff -Nru muggle-0.0.8-orig/vdr_player.c muggle-0.0.8/vdr_player.c +--- muggle-0.0.8-orig/vdr_player.c 2004-11-28 18:07:59.403969080 +0100 ++++ muggle-0.0.8/vdr_player.c 2004-11-28 18:09:47.448543808 +0100 +@@ -194,6 +194,10 @@ + void Play(); + void Forward(); + void Backward(); ++ char * GetCover(const char *fullname); ++ bool CopyCover(const char *coverName); ++ void RemoveOldCover(void); ++ + + void Goto(int Index, bool Still=false); + void SkipSeconds(int secs); +@@ -326,6 +330,63 @@ + } + } + ++char *mgPCMPlayer::GetCover(const char *fullname) ++{ ++ static char imageFile[1024]; ++ char *result = NULL; ++ FILE *fp; ++ ++ printf( "cov: checking %s for specific cover\n", fullname); ++ strcpy (imageFile, fullname); ++ ++ strcpy (strrchr (imageFile, '.'), ".jpg"); ++ if ((fp=fopen(imageFile, "rb"))) ++ { ++ // found specific cover ++ printf( "cov: specific cover file %s found\n", basename(imageFile)); ++ fclose (fp); ++ result = imageFile; ++ } ++ else ++ { ++ strcpy (strrchr (imageFile, '/'), "/Cover.jpg"); ++ if ((fp = fopen (imageFile, "rb"))) ++ { ++ fclose (fp); ++ result = imageFile; ++ printf( "cov: cover file Cover.jpg found\n"); ++ } else { ++ printf( "cov: no cover found\n" ); ++ } ++ } ++ return result; ++} ++ ++bool mgPCMPlayer::CopyCover(const char *coverName) ++{ ++ char commandString[1024]; ++ bool result=false; ++ int ret = false; ++ ++ sprintf((char*) commandString, "echo %s > /tmp/graphTFT.cover", coverName ); ++ ret=system((const char*)commandString); ++ ++ if (ret) result=true; ++ return result; ++} ++ ++void mgPCMPlayer::RemoveOldCover(void) ++{ ++ FILE *fp; ++ ++ if ((fp=fopen("/tmp/graphTFT.cover", "rb"))) ++ { ++ fclose (fp); ++ system( "rm /tmp/graphTFT.cover"); ++ printf( "cov: old cover removed\n" ); ++ } ++} ++ + void mgPCMPlayer::Action(void) + { + MGLOG( "mgPCMPlayer::Action" ); +@@ -335,6 +396,7 @@ + cResample resample[2]; + unsigned int nsamples[2]; + const mad_fixed_t *data[2]; ++ const char *coverName=0; + cScale scale; + cLevel level; + cNormalize norm; +@@ -388,6 +450,16 @@ + { + std::string filename = m_playing->getSourceFile(); + // mgDebug( 1, "mgPCMPlayer::Action: music file is %s", filename.c_str() ); ++ // First remove the old cover, when exist ++ RemoveOldCover(); ++ coverName=GetCover(filename.c_str()); ++ if(coverName) { ++ // if a cover exist, copy it to the /tmp directory ++ if(CopyCover(coverName)){ ++ printf( "cov: found and copy cover %s to /tmp/graphTFT.cover\n",coverName ); ++ } ++ } ++ + + if( ( m_decoder = mgDecoders::findDecoder( m_playing ) ) && m_decoder->start() ) + { diff --git a/patch/remotetimers.patch b/patch/remotetimers.patch new file mode 100644 index 0000000..5d4073c --- /dev/null +++ b/patch/remotetimers.patch @@ -0,0 +1,52 @@ +Description: <short summary of the patch> + TODO: Put a short summary on the line above and replace this paragraph + with a longer explanation of this change. Complete the meta-information + with other relevant fields (see below for details). To make it easier, the + information below has been extracted from the changelog. Adjust it or drop + it. + . + vdr-plugin-remotetimers (1.0.1-2yavdr1~precise) precise; urgency=medium + . + * automatic rebuild +Author: yavdr package builder <release@yavdr.org> + +--- +The information above should follow the Patch Tagging Guidelines, please +checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here +are templates for supplementary fields that you might want to add: + +Origin: <vendor|upstream|other>, <url of original patch> +Bug: <url in upstream bugtracker> +Bug-Debian: http://bugs.debian.org/<bugnumber> +Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber> +Forwarded: <no|not-needed|url proving that it has been forwarded> +Reviewed-By: <name and email of someone who approved the patch> +Last-Update: <YYYY-MM-DD> + +--- vdr-plugin-remotetimers-1.0.1.orig/Makefile ++++ vdr-plugin-remotetimers-1.0.1/Makefile +@@ -51,6 +51,9 @@ INCLUDES += + + DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' + ++# uncomment this to enable support for the graphtft plugin. ++#DEFINES += -DUSE_GRAPHTFT ++ + ### The object files (add further files here): + + OBJS = $(PLUGIN).o svdrp.o conflict.o menu.o menuitems.o setup.o moverec.o watcher.o +--- vdr-plugin-remotetimers-1.0.1.orig/menu.h ++++ vdr-plugin-remotetimers-1.0.1/menu.h +--- vdr-plugin-remotetimers-1.0.1.orig/menu.c ++++ vdr-plugin-remotetimers-1.0.1/menu.c +@@ -877,6 +877,10 @@ void cMenuEvent::Display(void) + { + cOsdMenu::Display(); + DisplayMenu()->SetEvent(event); ++#ifdef USE_GRAPHTFT ++ cStatus::MsgOsdSetEvent(event); ++#endif ++ + if (event->Description()) + cStatus::MsgOsdTextItem(event->Description()); + } diff --git a/patch/vdr-2.2.0_graphtftng.diff b/patch/vdr-2.2.0_graphtftng.diff new file mode 100644 index 0000000..186b553 --- /dev/null +++ b/patch/vdr-2.2.0_graphtftng.diff @@ -0,0 +1,157 @@ +--- vdr-2.2.0.plain/menu.c 2015-02-10 13:37:06.000000000 +0100 ++++ vdr-2.2.0.gtft/menu.c 2016-02-01 10:35:04.592774218 +0100 +@@ -1302,6 +1302,7 @@ + { + cOsdMenu::Display(); + DisplayMenu()->SetEvent(event); ++ cStatus::MsgOsdSetEvent(event); + if (event->Description()) + cStatus::MsgOsdTextItem(event->Description()); + } +@@ -1432,6 +1433,7 @@ + static void SetCurrentChannel(int ChannelNr) { currentChannel = ChannelNr; } + static const cEvent *ScheduleEvent(void); + virtual eOSState ProcessKey(eKeys Key); ++ virtual void Display(void); + }; + + int cMenuWhatsOn::currentChannel = 0; +@@ -1461,6 +1463,18 @@ + SetHelpKeys(); + } + ++void cMenuWhatsOn::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) { ++ int ni = 0; ++ for (cOsdItem *item = First(); item; item = Next(item)) { ++ cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); ++ } ++ } ++} ++ + bool cMenuWhatsOn::Update(void) + { + bool result = false; +@@ -1614,6 +1628,7 @@ + cMenuSchedule(void); + virtual ~cMenuSchedule(); + virtual eOSState ProcessKey(eKeys Key); ++ virtual void Display(void); + }; + + cMenuSchedule::cMenuSchedule(void) +@@ -1640,6 +1655,18 @@ + cMenuWhatsOn::ScheduleEvent(); // makes sure any posted data is cleared + } + ++void cMenuSchedule::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) { ++ int ni = 0; ++ for (cOsdItem *item = First(); item; item = Next(item)) { ++ cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); ++ } ++ } ++} ++ + void cMenuSchedule::PrepareScheduleAllThis(const cEvent *Event, const cChannel *Channel) + { + Clear(); +@@ -2561,6 +2588,7 @@ + } + cOsdMenu::Display(); + DisplayMenu()->SetRecording(recording); ++ cStatus::MsgOsdSetRecording(recording); + if (recording->Info()->Description()) + cStatus::MsgOsdTextItem(recording->Info()->Description()); + } +--- vdr-2.2.0.plain/osdbase.c 2015-01-15 11:11:11.000000000 +0100 ++++ vdr-2.2.0.gtft/osdbase.c 2015-10-16 14:48:22.000000000 +0200 +@@ -106,6 +106,7 @@ + free(status); + displayMenu->Clear(); + cStatus::MsgOsdClear(); ++ cStatus::MsgOsdMenuDestroy(); + if (!--displayMenuCount) + DELETENULL(displayMenu); + } +@@ -234,6 +235,7 @@ + displayMenuItems = displayMenu->MaxItems(); + displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX + displayMenu->SetTitle(title); ++ cStatus::MsgOsdMenuDisplay(menuCategory); + cStatus::MsgOsdTitle(title); + DisplayHelp(true); + int count = Count(); +--- vdr-2.2.0.plain/status.c 2014-01-25 11:47:39.000000000 +0100 ++++ vdr-2.2.0.gtft/status.c 2015-10-16 14:46:28.000000000 +0200 +@@ -130,3 +130,32 @@ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle); + } ++ ++void cStatus::MsgOsdSetEvent(const cEvent* event) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdSetEvent(event); ++} ++ ++void cStatus::MsgOsdSetRecording(const cRecording* recording) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdSetRecording(recording); ++} ++ ++void cStatus::MsgOsdMenuDisplay(eMenuCategory menuCategory) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdMenuDisplay(menuCategory); ++} ++ ++void cStatus::MsgOsdMenuDestroy() ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdMenuDestroy(); ++} ++void cStatus::MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdEventItem(Event, Text, Index, Count); ++} +--- vdr-2.2.0.plain/status.h 2014-01-25 11:47:39.000000000 +0100 ++++ vdr-2.2.0.gtft/status.h 2015-10-16 14:46:28.000000000 +0200 +@@ -84,6 +84,17 @@ + // The OSD displays the single line Text with the current channel information. + virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle) {} + // The OSD displays the given programme information. ++ virtual void OsdSetRecording(const cRecording* recording) {} ++ // The OSD displays the recording information. ++ virtual void OsdSetEvent(const cEvent* event) {} ++ // The OSD displays the event information. ++ virtual void OsdMenuDisplay(eMenuCategory menuCategory) {} ++ // report menu creation ++ virtual void OsdMenuDestroy() {} ++ // report menu destruvtion ++ virtual void OsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) {} ++ // The OSD displays the given single line Event as menu item at Index. ++ + public: + cStatus(void); + virtual ~cStatus(); +@@ -106,6 +117,11 @@ + static void MsgOsdTextItem(const char *Text, bool Scroll = false); + static void MsgOsdChannel(const char *Text); + static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle); ++ static void MsgOsdSetEvent(const cEvent* event); ++ static void MsgOsdSetRecording(const cRecording* recording); ++ static void MsgOsdMenuDisplay(eMenuCategory menuCategory); ++ static void MsgOsdMenuDestroy(); ++ static void MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count); + }; + + #endif //__STATUS_H diff --git a/patch/vdr-2.3.1_graphtftng.diff b/patch/vdr-2.3.1_graphtftng.diff new file mode 100644 index 0000000..b60c885 --- /dev/null +++ b/patch/vdr-2.3.1_graphtftng.diff @@ -0,0 +1,157 @@ +--- vdr-2.3.1.plain//menu.c 2015-09-14 15:22:49.000000000 +0200 ++++ vdr-2.3.1.gtft//menu.c 2016-02-01 10:37:00.688774779 +0100 +@@ -1465,6 +1465,7 @@ + { + cOsdMenu::Display(); + DisplayMenu()->SetEvent(event); ++ cStatus::MsgOsdSetEvent(event); + if (event->Description()) + cStatus::MsgOsdTextItem(event->Description()); + } +@@ -1594,6 +1595,7 @@ + static void SetCurrentChannel(int ChannelNr) { currentChannel = ChannelNr; } + static const cEvent *ScheduleEvent(void); + virtual eOSState ProcessKey(eKeys Key); ++ virtual void Display(void); + }; + + int cMenuWhatsOn::currentChannel = 0; +@@ -1619,6 +1621,18 @@ + SetHelpKeys(); + } + ++void cMenuWhatsOn::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) { ++ int ni = 0; ++ for (cOsdItem *item = First(); item; item = Next(item)) { ++ cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); ++ } ++ } ++} ++ + bool cMenuWhatsOn::Update(void) + { + bool result = false; +@@ -1788,6 +1802,7 @@ + cMenuSchedule(void); + virtual ~cMenuSchedule(); + virtual eOSState ProcessKey(eKeys Key); ++ virtual void Display(void); + }; + + cMenuSchedule::cMenuSchedule(void) +@@ -1846,6 +1861,18 @@ + } + } + ++void cMenuSchedule::Display(void) ++{ ++ cOsdMenu::Display(); ++ ++ if (Count() > 0) { ++ int ni = 0; ++ for (cOsdItem *item = First(); item; item = Next(item)) { ++ cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); ++ } ++ } ++} ++ + bool cMenuSchedule::PrepareScheduleAllThis(const cTimers *Timers, const cSchedules *Schedules, const cEvent *Event, const cChannel *Channel) + { + if (const cSchedule *Schedule = Schedules->GetSchedule(Channel)) { +@@ -2793,6 +2820,7 @@ + } + cOsdMenu::Display(); + DisplayMenu()->SetRecording(recording); ++ cStatus::MsgOsdSetRecording(recording); + if (recording->Info()->Description()) + cStatus::MsgOsdTextItem(recording->Info()->Description()); + } +--- vdr-2.3.1.plain//osdbase.c 2015-09-10 13:23:07.000000000 +0200 ++++ vdr-2.3.1.gtft//osdbase.c 2015-10-23 08:30:06.000000000 +0200 +@@ -107,6 +107,7 @@ + free(status); + displayMenu->Clear(); + cStatus::MsgOsdClear(); ++ cStatus::MsgOsdMenuDestroy(); + if (!--displayMenuCount) + DELETENULL(displayMenu); + } +@@ -236,6 +237,7 @@ + displayMenuItems = displayMenu->MaxItems(); + displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX + displayMenu->SetTitle(title); ++ cStatus::MsgOsdMenuDisplay(menuCategory); + cStatus::MsgOsdTitle(title); + DisplayHelp(true); + int count = Count(); +--- vdr-2.3.1.plain//status.c 2014-01-25 11:47:39.000000000 +0100 ++++ vdr-2.3.1.gtft//status.c 2015-10-23 08:30:06.000000000 +0200 +@@ -130,3 +130,32 @@ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle); + } ++ ++void cStatus::MsgOsdSetEvent(const cEvent* event) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdSetEvent(event); ++} ++ ++void cStatus::MsgOsdSetRecording(const cRecording* recording) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdSetRecording(recording); ++} ++ ++void cStatus::MsgOsdMenuDisplay(eMenuCategory menuCategory) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdMenuDisplay(menuCategory); ++} ++ ++void cStatus::MsgOsdMenuDestroy() ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdMenuDestroy(); ++} ++void cStatus::MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) ++{ ++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) ++ sm->OsdEventItem(Event, Text, Index, Count); ++} +--- vdr-2.3.1.plain//status.h 2015-08-02 12:34:44.000000000 +0200 ++++ vdr-2.3.1.gtft//status.h 2015-10-23 08:30:06.000000000 +0200 +@@ -81,6 +81,17 @@ + // The OSD displays the single line Text with the current channel information. + virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle) {} + // The OSD displays the given programme information. ++ virtual void OsdSetRecording(const cRecording* recording) {} ++ // The OSD displays the recording information. ++ virtual void OsdSetEvent(const cEvent* event) {} ++ // The OSD displays the event information. ++ virtual void OsdMenuDisplay(eMenuCategory menuCategory) {} ++ // report menu creation ++ virtual void OsdMenuDestroy() {} ++ // report menu destruvtion ++ virtual void OsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) {} ++ // The OSD displays the given single line Event as menu item at Index. ++ + public: + cStatus(void); + virtual ~cStatus(); +@@ -103,6 +114,11 @@ + static void MsgOsdTextItem(const char *Text, bool Scroll = false); + static void MsgOsdChannel(const char *Text); + static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle); ++ static void MsgOsdSetEvent(const cEvent* event); ++ static void MsgOsdSetRecording(const cRecording* recording); ++ static void MsgOsdMenuDisplay(eMenuCategory menuCategory); ++ static void MsgOsdMenuDestroy(); ++ static void MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count); + }; + + #endif //__STATUS_H diff --git a/patch/xsnow-gtftng.patch b/patch/xsnow-gtftng.patch new file mode 100644 index 0000000..bfd70bb --- /dev/null +++ b/patch/xsnow-gtftng.patch @@ -0,0 +1,66 @@ +--- ../../xsnow.org/xsnow-1.42/toon_root.c 2001-12-16 00:09:39.000000000 +0100 ++++ ./toon_root.c 2013-11-08 16:37:09.075742684 +0100 +@@ -224,6 +224,45 @@ + return winreturn; + } + ++static Window __ToonGetWindowByName(Display *display, int screen, Window window, int depth, const char* useName) ++{ ++ Window rootReturn, parentReturn, *children; ++ Window winreturn = (Window)0; ++ unsigned int nChildren; ++ char* name = NULL; ++ ++ if (depth > 5) ++ return (Window)0; ++ ++ if (XQueryTree(display, window, &rootReturn, &parentReturn, &children, &nChildren)) ++ { ++ int i; ++ ++ for (i = 0; i < nChildren; ++i) ++ { ++ XWindowAttributes attributes; ++ ++ if (XFetchName(display, children[i], &name)) ++ { ++ if (strcasecmp(name, useName) == 0) ++ { ++ winreturn = children[i]; ++ break; ++ } ++ } ++ ++ winreturn = __ToonGetWindowByName(display, screen, children[i], depth+1, useName); ++ ++ if (winreturn) ++ break; ++ } ++ ++ XFree((char *) children); ++ } ++ ++ return winreturn; ++} ++ + + /* + * Returns the window ID of the `background' window on to which the +@@ -253,7 +292,16 @@ + + *clientparent = root; + +- if (XGetWindowProperty(display, root, ++ if (background = __ToonGetWindowByName(display, screen, root, 0, "graphtft-fe")) ++ { ++ *clientparent = background; ++ snprintf(toon_message, TOON_MESSAGE_LENGTH, ++ _("Drawing to graphtft-fe")); ++ toon_message[TOON_MESSAGE_LENGTH-1] = '\0'; ++ } ++ ++ if (!background ++ && XGetWindowProperty(display, root, + NAUTILUS_DESKTOP_WINDOW_ID, + 0, 1, False, XA_WINDOW, + &actual_type, &actual_format, |