diff -Nru timeline-0.8.1/checkerOsd.c timeline-0.8.1.2/checkerOsd.c
--- timeline-0.8.1/checkerOsd.c	2003-10-14 18:09:02.000000000 +0200
+++ timeline-0.8.1.2/checkerOsd.c	2004-11-26 19:01:02.896748792 +0100
@@ -11,6 +11,10 @@
 
 #define HEADINFO	"(c) JS"
 
+#ifndef clrGrey
+#define clrGrey 0xFF5F5F5F
+#endif
+
 class blinkThread : public cThread
 {
 	class checkerOsd *parent;
@@ -33,9 +37,14 @@
 				{
 					if (recordingtimer[i].timer && recordingtimer[i].timer->Recording())
 					{
-						enum eDvbColor col=(b&1)?clrGrey:clrYellow;
 						osdsem.Lock();
+#if VDRVERSNUM < 10307
+						enum eDvbColor col=(b&1)?clrGrey:clrYellow;
 						parent->osd->Fill(recordingtimer[i].x1,recordingtimer[i].y1,recordingtimer[i].x2,recordingtimer[i].y2,col,parent->graph_wh);
+#else 
+						tColor col = (b&1)?clrGrey:clrYellow;
+						parent->osd->DrawRectangle(recordingtimer[i].x1,recordingtimer[i].y1,recordingtimer[i].x2,recordingtimer[i].y2,col);
+#endif 
 						osdsem.Unlock();
 					}
 				}
@@ -58,9 +67,13 @@
 			{
 				char buf[2000];
 				osdsem.Lock();
+#if VDRVERSNUM < 10307
 				parent->osd->Fill(parent->x0_graph,parent->y0_graph+5+30+cOsd::LineHeight()*3-5,parent->x0_graph+parent->width_graph,parent->y0_graph+5+30+cOsd::LineHeight()*4,clrBackground,parent->graph_wh);
 
 				parent->osd->SetFont(parent->smallFont);
+#else 
+				parent->osd->DrawRectangle(parent->x0_graph,parent->y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*3-5,parent->x0_graph+parent->width_graph,parent->y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*4,clrGray50);
+#endif 
 				switch (ts)
 				{
 					case 2:
@@ -74,9 +87,13 @@
 						sprintf(buf,"%d: %s, (Prio %d)",(tnr>9?0:tnr),ct->File(),ct->Priority());
 						break;
 				}
+#if VDRVERSNUM < 10307
 				parent->osd->Text(parent->x0_graph+5,parent->y0_graph+5+30+cOsd::LineHeight()*3-5,buf,clrYellow,clrBackground,parent->graph_wh);
 
 				parent->osd->SetFont(fontOsd);
+#else 
+				parent->osd->DrawText(parent->x0_graph+5,parent->y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*3-5,buf,clrYellow,clrGray50,cFont::GetFont(fontSml));
+#endif 
 				osdsem.Unlock();
 			}
 			osdsem.Lock();
@@ -184,7 +201,11 @@
 			cChannel const *ch1=ct1->Channel();
 			char line1[200],line2[200],line3[200];
 
+#if VDRVERSNUM < 10305 // was Flags() introduced with VPS? 1.3.5 should be a safe guess
 			if (ct1->Active())
+#else
+			if (ct1->Flags() & tfActive)
+#endif
 			{
 				if (showDay<0 && ct1->IsSingleEvent())
 				{
@@ -199,7 +220,11 @@
 				{
 					cChannel const *ch2=ct2->Channel();
 
+#if VDRVERSNUM < 10305 // was Flags() introduced with VPS? 1.3.5 should be a safe guess
 					if (ct1!=ct2 && ct2->Active())
+#else
+					if (ct1!=ct2 && ct2->Flags() & tfActive)
+#endif
 					{
 						bool hasmatched=false;
 						time_t start1t,start2t;
@@ -413,8 +438,13 @@
 			maxx1=minx2;
 			minx2=z;
 		}
+#if VDRVERSNUM < 10307
 		osd->Fill(maxx1,recordingtimer[r1].y1,minx2,recordingtimer[r1].y2,clrRed,graph_wh);
 		osd->Fill(maxx1,recordingtimer[r2].y1,minx2,recordingtimer[r2].y2,clrRed,graph_wh);
+#else 
+		osd->DrawRectangle(maxx1,recordingtimer[r1].y1,minx2,recordingtimer[r1].y2,clrRed);
+		osd->DrawRectangle(maxx1,recordingtimer[r2].y1,minx2,recordingtimer[r2].y2,clrRed);
+#endif 
 	}
 }
 
@@ -427,11 +457,18 @@
 		blinker->setShow(0,NULL);
 		blinker->LockOSD();
 	}
+#if VDRVERSNUM < 10307
 	osd->Clear(graph_wh);
+#endif
 	navtxt=tr("Cursor up/down/left/right+Nums");
+#if VDRVERSNUM < 10307
 	osd->SetFont(smallFont);
 	osd->Text(x0_graph+width_graph-osd->Width(navtxt),y0_graph,navtxt,clrWhite,clrBlue,graph_wh);
 	osd->SetFont(fontOsd);
+#else 
+	osd->DrawRectangle(areas[0].x1, areas[0].y1, areas[0].x2, areas[0].y2, clrGray50);
+	osd->DrawText(x0_graph+width_graph-cFont::GetFont(fontSml)->Width(navtxt),y0_graph,navtxt,clrWhite,clrBlue,cFont::GetFont(fontSml));
+#endif 
 
 	if (Timers.Count()>0)
 	{
@@ -463,18 +500,31 @@
 		y=day_tm.tm_year+1900;
 		
 		sprintf(buf,"%04d-%02d-%02d %s",y,m,day,(day==today.tm_mday?tr("(today)"):""));
+#if VDRVERSNUM < 10307
 		osd->Text(x0_graph+10,y0_graph+5,buf,clrCyan,clrBackground,graph_wh);
+#else 
+		osd->DrawText(x0_graph+10,y0_graph+5,buf,clrCyan,clrGray50,cFont::GetFont(fontOsd));
+#endif 
 
 		for(int i=0;i<25;i+=3)
 		{
 			x=x0_graph+graph_border+(i*(width_graph-graph_border*2)/24);
 			sprintf(buf,"%d",i);
+#if VDRVERSNUM < 10307
 			osd->Text(x-osd->Width(buf)/2,y0_graph+5+30+cOsd::LineHeight(),buf,clrCyan,clrBackground,graph_wh);
 			osd->Fill(x,y0_graph+5+20+cOsd::LineHeight(),x,y0_graph+5+30+cOsd::LineHeight(),clrBlack,graph_wh);
+#else 
+			osd->DrawText(x-cFont::GetFont(fontOsd)->Width(buf)/2,y0_graph+5+30+cFont::GetFont(fontOsd)->Height(),buf,clrCyan,clrGray50,cFont::GetFont(fontOsd));
+			osd->DrawRectangle(x,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),x,y0_graph+5+30+cFont::GetFont(fontOsd)->Height(),clrBlack);
+#endif 
 		}
+#if VDRVERSNUM < 10307
 		osd->Fill(x0_graph+graph_border,y0_graph+5+cOsd::LineHeight(),
 		          x0_graph+width_graph-graph_border,y0_graph+5+20+cOsd::LineHeight(),
 				  clrBlack,graph_wh);
+#else 
+		osd->DrawRectangle(x0_graph+graph_border,y0_graph+5+cFont::GetFont(fontOsd)->Height(),x0_graph+width_graph-graph_border,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),clrBlack);
+#endif 
 
 		cTimer *ct1;
 		struct paintdata *pd=new paintdata[2401];
@@ -490,7 +540,9 @@
 		}
 
 		int cnt=1,reccnt=0;
+#if VDRVERSNUM < 10307
 		osd->SetFont(smallFont);
+#endif
 		Timers.Sort();
 		for(int run=0;run<2;run++)
 		{
@@ -554,15 +606,26 @@
 							}
 						}
 
+#if VDRVERSNUM < 10307
 						y=y0_graph+5+1+p+cOsd::LineHeight();
 						y2=y0_graph+5+p+h-1+cOsd::LineHeight();
 						enum eDvbColor col=ct1->Recording()?clrGrey:clrYellow;
 						osd->Fill(x,y,x2,y2,col,graph_wh);
+#else 
+						y=y0_graph+5+1+p+cFont::GetFont(fontOsd)->Height();
+						y2=y0_graph+5+p+h-1+cFont::GetFont(fontOsd)->Height();
+						tColor col=ct1->Recording()?clrGrey:clrYellow;
+						osd->DrawRectangle(x,y,x2,y2,col);
+#endif 
 
 						if (cnt<11)
 						{
 							sprintf(buf,"%d",(cnt>9?0:cnt));
+#if VDRVERSNUM < 10307
 							osd->Text(x2-osd->Width(buf),y0_graph+5+30+cOsd::LineHeight()*2-(cnt&1?0:19),buf,clrYellow,clrBackground,graph_wh);
+#else 
+							osd->DrawText(x2-cFont::GetFont(fontSml)->Width(buf),y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*2-(cnt&1?0:19),buf,clrYellow,clrGray50,cFont::GetFont(fontSml));
+#endif 
 							quicktimer[cnt-1]=ct1;
 							cnt++;
 						}
@@ -622,15 +685,26 @@
 							}
 						}
 
+#if VDRVERSNUM < 10307
 						y=y0_graph+5+1+p+cOsd::LineHeight();
 						y2=y0_graph+5+p+h-1+cOsd::LineHeight();
 						enum eDvbColor col=ct1->Recording()?clrGrey:clrYellow;
 						osd->Fill(x,y,x2,y2,col,graph_wh);
+#else 
+						y=y0_graph+5+1+p+cFont::GetFont(fontOsd)->Height();
+						y2=y0_graph+5+p+h-1+cFont::GetFont(fontOsd)->Height();
+						tColor col=ct1->Recording()?clrGrey:clrYellow;
+						osd->DrawRectangle(x,y,x2,y2,col);
+#endif 
 
 						if (cnt<11)
 						{
 							sprintf(buf,"%d",(cnt>9?0:cnt));
+#if VDRVERSNUM < 10307
 							osd->Text(x2-osd->Width(buf),y0_graph+5+30+cOsd::LineHeight()*2-(cnt&1?0:19),buf,clrYellow,clrBackground,graph_wh);
+#else 
+							osd->DrawText(x2-cFont::GetFont(fontSml)->Width(buf),y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*2-(cnt&1?0:19),buf,clrYellow,clrGray50,cFont::GetFont(fontSml));
+#endif 
 							quicktimer[cnt-1]=ct1;
 							cnt++;
 						}
@@ -651,11 +725,18 @@
 
 		genLines(day,dayt);
 
+#if VDRVERSNUM < 10307
 		osd->Fill(x0_graph+graph_border,y0_graph+5+cOsd::LineHeight(),x0_graph+width_graph-graph_border,y0_graph+5+cOsd::LineHeight(),clrBlue,graph_wh);
 		osd->Fill(x0_graph+graph_border,y0_graph+5+20+cOsd::LineHeight(),x0_graph+width_graph-graph_border,y0_graph+5+20+cOsd::LineHeight(),clrBlue,graph_wh);
 		osd->Fill(x0_graph+graph_border,y0_graph+5+cOsd::LineHeight(),x0_graph+graph_border,y0_graph+5+20+cOsd::LineHeight(),clrBlue,graph_wh);
 		osd->Fill(x0_graph+width_graph-graph_border,y0_graph+5+cOsd::LineHeight(),x0_graph+width_graph-graph_border,y0_graph+5+20+cOsd::LineHeight(),clrBlue,graph_wh);
 		osd->SetFont(fontOsd);
+#else 
+		osd->DrawRectangle(x0_graph+graph_border,y0_graph+5+cFont::GetFont(fontOsd)->Height(),x0_graph+width_graph-graph_border,y0_graph+5+cFont::GetFont(fontOsd)->Height(),clrBlue);
+		osd->DrawRectangle(x0_graph+graph_border,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),x0_graph+width_graph-graph_border,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),clrBlue);
+		osd->DrawRectangle(x0_graph+graph_border,y0_graph+5+cFont::GetFont(fontOsd)->Height(),x0_graph+graph_border,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),clrBlue);
+		osd->DrawRectangle(x0_graph+width_graph-graph_border,y0_graph+5+cFont::GetFont(fontOsd)->Height(),x0_graph+width_graph-graph_border,y0_graph+5+20+cFont::GetFont(fontOsd)->Height(),clrBlue);
+#endif 
 		osd->Flush();
 		showTimer(1);
 		if (blinker && reccnt>0)
@@ -678,13 +759,20 @@
 				blinker->LockOSD();
 			}
 			char buf[2000];
+#if VDRVERSNUM < 10307
 			osd->Fill(x0_graph,y0_graph+5+30+cOsd::LineHeight()*3-5,x0_graph+width_graph,y0_graph+5+30+cOsd::LineHeight()*4,clrBackground,graph_wh);
 
 			osd->SetFont(smallFont);
+#endif
 			sprintf(buf,"%d: %s",(timer>9?0:timer),quicktimer[timer-1]->File());
+#if VDRVERSNUM < 10307
 			osd->Text(x0_graph+5,y0_graph+5+30+cOsd::LineHeight()*3-5,buf,clrYellow,clrBackground,graph_wh);
 
 			osd->SetFont(fontOsd);
+#else 
+			osd->DrawRectangle(x0_graph,y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*3-5,x0_graph+width_graph,y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*4,clrGray50);
+			osd->DrawText(x0_graph+5,y0_graph+5+30+cFont::GetFont(fontOsd)->Height()*3-5,buf,clrYellow,clrGray50,cFont::GetFont(fontSml));
+#endif 
 			osd->Flush();
 			if (blinker)
 				blinker->UnlockOSD();
@@ -695,7 +783,11 @@
 {
 	if (blinker)
 		blinker->LockOSD();
+#if VDRVERSNUM < 10307
 	osd->Clear(text_wh);
+#else 
+	osd->DrawRectangle(areas[1].x1, areas[1].y1, areas[1].x2, areas[1].y2, clrGray50);
+#endif 
 	int y=y0_text;
 	for(int i=sline;i<totalLines;i++)
 	{
@@ -703,16 +795,33 @@
 
 		if (t)
 		{
+#if VDRVERSNUM < 10307
 			enum eDvbColor col=clrWhite;
 			osd->Text(x0_text+5, y, t,col,clrBackground,text_wh);
+#else 
+			tColor col=clrWhite;
+			osd->DrawText(x0_text+5, y, t,col,clrGray50,cFont::GetFont(fontOsd));
+#endif 
 			if (i % 3==0)
+#if VDRVERSNUM < 10307
 				osd->Fill(x0_text,y+cOsd::LineHeight()-2,x0_text+90,y+cOsd::LineHeight(),clrBlack,text_wh);
+#else 
+				osd->DrawRectangle(x0_text,y+cFont::GetFont(fontOsd)->Height()-2,x0_text+90,y+cFont::GetFont(fontOsd)->Height(),clrBlack);
+#endif 
 			if ((i+1) % 3==0)
 			{
+#if VDRVERSNUM < 10307
 				osd->Fill(x0_text,y+cOsd::LineHeight()+3,x0_text+width_text,y+cOsd::LineHeight()+6,clrTransparent,text_wh);
+#else 
+				osd->DrawRectangle(x0_text,y+cFont::GetFont(fontOsd)->Height()+3,x0_text+width_text,y+cFont::GetFont(fontOsd)->Height()+6,clrTransparent);
+#endif 
 				y+=10;
 			}
+#if VDRVERSNUM < 10307
 			y+=cOsd::LineHeight()+1;
+#else 
+			y+=cFont::GetFont(fontOsd)->Height()+1;
+#endif 
 		}
 	}
 	osd->Flush();
@@ -721,7 +830,11 @@
 }
 void checkerOsd::Show(void)
 {
+#if VDRVERSNUM < 10307
 	osd = cOsd::OpenRaw(50, 50);
+#else 
+	osd = cOsdProvider::NewOsd(50, 50);
+#endif 
   	if (osd)
 	{
 		time_t tmt;
@@ -733,24 +846,52 @@
 		totalLines=0;
 		textLines=9; //9;
 
+#if VDRVERSNUM < 10307
 		height_graph=cOsd::LineHeight()*5;
 		height_text=(cOsd::LineHeight()+1)*textLines;
+#else 
+		height_graph=cFont::GetFont(fontOsd)->Height()*5;
+		height_text=(cFont::GetFont(fontOsd)->Height()+1)*textLines;
+#endif 
 		width_graph=590;		
 		width_text=590; //cOsd::CellWidth()*40;
 		x0_graph=x0_text=10;
+#if VDRVERSNUM < 10307
 		y0_graph=20+cOsd::LineHeight()+5+8;
 		y0_text=20+cOsd::LineHeight()+5+8+height_graph+8;
+#else 
+		y0_graph=20+cFont::GetFont(fontOsd)->Height()+5+8;
+		y0_text=20+cFont::GetFont(fontOsd)->Height()+5+8+height_graph+8;
+		int width_title=cFont::GetFont(fontOsd)->Width("Timeline")+20;
+#endif 
 
 		genLines();
 
 //		osd->Create(0, 240, 612, 250, 4);
 
+#if VDRVERSNUM < 10307
 		graph_wh=osd->Create(x0_graph, y0_graph, width_graph, height_graph, 4);
 		text_wh=osd->Create(x0_text, y0_text, width_text, height_text, 2);
 
 		int width_title=osd->Width("Timeline")+20;
 		title_wh=osd->Create(x0_graph, 20, width_title, cOsd::LineHeight()+5, 2);
+#else 
+		tArea a[sizeof(areas) / sizeof(tArea)] = {
+				{ x0_graph, y0_graph, x0_graph+width_graph-1, y0_graph+height_graph-1, 4 },
+				{ x0_text, y0_text, x0_text+width_text-1, y0_text+height_text-1, 2 },
+				{ x0_graph, 20, x0_graph+width_title-1, 20+cFont::GetFont(fontOsd)->Height()+5-1, 2 }
+		};
+		memcpy(areas, a, sizeof(areas));
+		for (uint i = 0; i < sizeof(areas) / sizeof(tArea); ++i) {
+			while ((areas[i].x2 - areas[i].x1 + 1) % (8 / areas[i].bpp) != 0)
+				++areas[i].x2;
+			while ((areas[i].y2 - areas[i].y1 + 1) % (8 / areas[i].bpp) != 0)
+				++areas[i].y2;
+		}
+		osd->SetAreas(areas, sizeof(areas) / sizeof(tArea));
+#endif 
 
+#if VDRVERSNUM < 10307
 		osd->AddColor(clrBackground);
 		osd->AddColor(clrBlue);
 		osd->AddColor(clrWhite);
@@ -764,6 +905,14 @@
 		osd->Text(20,20, "Timeline",clrWhite,clrBackground,title_wh);
 		osd->Fill(10,20+cOsd::LineHeight(),50,20+cOsd::LineHeight()+1,clrBlue,title_wh);
 		osd->Fill(20+osd->Width("Timeline")+10-40,21,20+osd->Width("Timeline")+10,22,clrBlue,title_wh);
+#else 
+		for (uint i = 0; i < sizeof(areas) / sizeof(tArea); ++i)
+			osd->DrawRectangle(areas[i].x1, areas[i].y1, areas[i].x2, areas[i].y2, clrGray50);
+		
+		osd->DrawText(20,20, "Timeline",clrWhite,clrGray50,cFont::GetFont(fontOsd));
+		osd->DrawRectangle(10,20+cFont::GetFont(fontOsd)->Height(),50,20+cFont::GetFont(fontOsd)->Height()+1,clrBlue);
+		osd->DrawRectangle(20+cFont::GetFont(fontOsd)->Width("Timeline")+10-40,21,20+cFont::GetFont(fontOsd)->Width("Timeline")+10,22,clrBlue);
+#endif 
 		osd->Flush();
 
 		blinker=new blinkThread(this);
diff -Nru timeline-0.8.1/checkerOsd.h timeline-0.8.1.2/checkerOsd.h
--- timeline-0.8.1/checkerOsd.h	2003-10-14 17:56:57.000000000 +0200
+++ timeline-0.8.1.2/checkerOsd.h	2004-11-26 18:57:56.751047240 +0100
@@ -34,7 +34,11 @@
 {
 	friend class blinkThread;
 	cPlugin *parent;
+#if VDRVERSNUM < 10307
 	cOsdBase *osd;
+#else /* VDR10307 */
+	cOsd *osd;
+#endif /* VDR10307 */
 
 	enum eDvbFont smallFont;
 	class cDevice *devices[MAXDEVICES];
@@ -54,7 +58,11 @@
 	int x0_text;
 	int y0_graph;
 	int y0_text;
+#if VDRVERSNUM < 10307
 	tWindowHandle title_wh,graph_wh,text_wh;
+#else /* VDR10307 */
+	tArea areas[3];
+#endif /* VDR10307 */
 	int textLines;
 	cTimer *quicktimer[10];
 	struct recordingdata recordingtimer[MAXRECORDS];
