Index: /titan/titan/adjust.h
===================================================================
--- /titan/titan/adjust.h	(revision 16510)
+++ /titan/titan/adjust.h	(revision 16511)
@@ -166,5 +166,5 @@
 	setchoiceboxselection(channellistview, getconfig("channellistview", NULL));
 
-	drawscreen(adjust, 0);
+	drawscreen(adjust, 0, 0);
 	addscreenrc(adjust, listbox);
 
Index: /titan/titan/audiotrack.h
===================================================================
--- /titan/titan/audiotrack.h	(revision 16510)
+++ /titan/titan/audiotrack.h	(revision 16511)
@@ -61,5 +61,5 @@
 	if(treffer == 0) listbox->aktline = 1;
 
-	drawscreen(audiotrack, 0);
+	drawscreen(audiotrack, 0, 0);
 	addscreenrc(audiotrack, listbox);
 
Index: /titan/titan/autores.h
===================================================================
--- /titan/titan/autores.h	(revision 16510)
+++ /titan/titan/autores.h	(revision 16511)
@@ -5,5 +5,5 @@
 {
 	debug(1000, "in");
-	int rcret = -1, tmpscreencalc = 0, fromthread = 0;
+	int rcret = -1, fromthread = 0;
 	struct skin* autores = getscreen("autores");
 	struct skin* framebuffer = getscreen("framebuffer");
@@ -19,16 +19,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(autores, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(autores, framebuffer, 2);
 		status.rcowner = autores;
 		bg = savescreen(autores);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(autores, 2);
+		drawscreen(autores, 0, 2);
 	}
 	else
-		drawscreen(autores, 0);
+		drawscreen(autores, 0, 0);
 
 	//deaktivate for test, so we can end the screen with each keypress
@@ -44,5 +39,4 @@
 		restorescreen(bg, autores);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
@@ -53,5 +47,5 @@
 	{
 		clearscreen(autores);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	}
 
Index: /titan/titan/avsettings.h
===================================================================
--- /titan/titan/avsettings.h	(revision 16510)
+++ /titan/titan/avsettings.h	(revision 16511)
@@ -138,5 +138,5 @@
 	free(ret); ret = NULL;
 
-	drawscreen(avsettings, 0);
+	drawscreen(avsettings, 0, 0);
 	addscreenrc(avsettings, listbox);
 
@@ -181,5 +181,5 @@
 				}
 			}
-			drawscreen(avsettings, 0);
+			drawscreen(avsettings, 0, 0);
 		}
 		setlr = 0;
@@ -205,5 +205,5 @@
 
 					}
-					if(flag == 1) drawscreen(avsettings, 0);
+					if(flag == 1) drawscreen(avsettings, 0, 0);
 				}
 				free(ret); ret = NULL;
@@ -239,5 +239,5 @@
 				changeinput(colformatscart, ret);
 				free(ret); ret = NULL;
-				drawscreen(avsettings, 0);
+				drawscreen(avsettings, 0, 0);
 			}
 			if(audiosource->ret != NULL)
Index: /titan/titan/blindscanadjust.h
===================================================================
--- /titan/titan/blindscanadjust.h	(revision 16510)
+++ /titan/titan/blindscanadjust.h	(revision 16511)
@@ -65,5 +65,5 @@
 	}
 
-	drawscreen(blindscan, 0);
+	drawscreen(blindscan, 0, 0);
 	addscreenrc(blindscan, listbox);
 
Index: /titan/titan/channelbynr.h
===================================================================
--- /titan/titan/channelbynr.h	(revision 16510)
+++ /titan/titan/channelbynr.h	(revision 16511)
@@ -9,5 +9,5 @@
 	changetext(channelbynr, tmpstr);
 	free(tmpstr); tmpstr = NULL;
-	drawscreen(channelbynr, 0);
+	drawscreen(channelbynr, 0, 0);
 }
 
@@ -23,5 +23,5 @@
 
 	status.rckey = rcret;
-	drawscreen(channelbynr, 0);
+	drawscreen(channelbynr, 0, 0);
 
 	while(1)
@@ -58,5 +58,5 @@
 			{
 				clearscreen(channelbynr);
-				drawscreen(skin, 0);
+				drawscreen(skin, 0, 0);
 
 				mainbouquetnode = getmainbouquetbybouquetpointer(bouquetnode);
Index: /titan/titan/channelhistroy.h
===================================================================
--- /titan/titan/channelhistroy.h	(revision 16510)
+++ /titan/titan/channelhistroy.h	(revision 16511)
@@ -100,5 +100,5 @@
 
 	addscreenrc(chistory, listbox);
-	drawscreen(chistory, 0);
+	drawscreen(chistory, 0, 0);
 
 	while(1)
@@ -119,5 +119,5 @@
 	delownerrc(chistory);
 	clearscreen(chistory);
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 }
 
Index: /titan/titan/channellist.h
===================================================================
--- /titan/titan/channellist.h	(revision 16510)
+++ /titan/titan/channellist.h	(revision 16511)
@@ -395,13 +395,10 @@
 	{
 		if(listbox->select == NULL)
-		{
-			status.screencalc = 2;
-			drawscreen(channellist, 0);
-			status.screencalc = 0;
-		}
+			drawscreen(channellist, 2, 0);
+
 		if(listbox->select != NULL)
 			status.markedchannel = (struct channel*)listbox->select->handle;
 	}
-	drawscreen(channellist, 0);
+	drawscreen(channellist, 0, 0);
 }
 
@@ -654,12 +651,9 @@
 	{
 		firstdraw = 1;
-		drawscreen(channellist, 4);
+		drawscreen(channellist, 0, 4);
 	}
 	else
-	{
-		status.screencalc = 2;
-		drawscreen(channellist, 0);
-		status.screencalc = 0;
-	}
+		drawscreen(channellist, 2, 0);
+
 	addscreenrcchannellist(channellist, listbox);
 
@@ -688,9 +682,5 @@
 		}
 		else
-		{
-			status.screencalc = 2;
-			rcret = waitrc(channellist, 10000, 0);
-			status.screencalc = 0;
-		}
+			rcret = waitrc(channellist, 10000, 2);
 
 		//read epg new
@@ -725,5 +715,5 @@
 		{
 			changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-			drawscreen(channellist, 0);
+			drawscreen(channellist, 0, 0);
 		}
 
@@ -765,5 +755,5 @@
 				selectchannel(listbox, sid, tid);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == PROTECTMODE && listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcok", NULL))
@@ -784,5 +774,5 @@
 				recalclist(list, aktlist, listmode, channellist, listbox, channeltimeline);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == CPMODE && listbox->select != NULL && listbox->select->handle != NULL && rcret == getrcconfigint("rcok", NULL))
@@ -807,5 +797,5 @@
 				}
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == EDITMODE && listbox->select != NULL && listbox->select->handle1 != NULL && rcret == getrcconfigint("rcok", NULL))
@@ -855,5 +845,5 @@
 				recalclist(list, aktlist, listmode, channellist, listbox, channeltimeline);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == RMMODE && listbox->select != NULL && listbox->select->handle1 != NULL && rcret == getrcconfigint("rcok", NULL))
@@ -900,5 +890,5 @@
 				recalclist(list, aktlist, listmode, channellist, listbox, channeltimeline);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == MVMODE && listbox->select != NULL && rcret == getrcconfigint("rcok", NULL))
@@ -915,5 +905,5 @@
 				}
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			if(listmode == MVMODE && listbox->select != NULL && movesel != NULL && (rcret == getrcconfigint("rcup", NULL) || rcret == getrcconfigint("rcdown", NULL) || rcret == getrcconfigint("rcchdown", NULL) || rcret == getrcconfigint("rcchup", NULL)))
@@ -936,5 +926,5 @@
 					if(status.moveblockcount > 10)
 						status.moveblockcount = 10;
-					drawscreen(channellist, 0);
+					drawscreen(channellist, 0, 0);
 					continue;
 				}
@@ -944,5 +934,5 @@
 					if(status.moveblockcount < 0)
 						status.moveblockcount = 0;
-					drawscreen(channellist, 0);
+					drawscreen(channellist, 0, 0);
 					continue;
 				}
@@ -1058,5 +1048,5 @@
 				recalclist(list, aktlist, listmode, channellist, listbox, channeltimeline);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			continue;
@@ -1220,5 +1210,5 @@
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
 				resettvpic();
-				drawscreen(skin, 0);
+				drawscreen(skin, 0, 0);
 				if(status.servicetype == 0)
 					ret = servicestart((struct channel*)listbox->select->handle, getconfig("channellist", NULL), NULL, 0);
@@ -1266,7 +1256,5 @@
 					listbox->aktpage = -1;
 
-					status.screencalc = 2;
-					drawscreen(channellist, 0);
-					status.screencalc = 0;
+					drawscreen(channellist, 2, 0);
 					changetext(tmpnode, tmpaktlist->name);
 					tmpnode->handle = (char*)tmpaktlist->bouquet;
@@ -1338,7 +1326,5 @@
 					listbox->aktpage = -1;
 
-					status.screencalc = 2;
-					drawscreen(channellist, 0);
-					status.screencalc = 0;
+					drawscreen(channellist, 2, 0);
 					changetext(tmpnode, tmpaktlist->name);
 					tmpnode->handle = (char*)tmpaktlist;
@@ -1398,7 +1384,5 @@
 				listbox->aktpage = -1;
 
-				status.screencalc = 2;
-				drawscreen(channellist, 0);
-				status.screencalc = 0;
+				drawscreen(channellist, 2, 0);
 				tmpstr = malloc(2);
 				if(tmpstr != NULL)
@@ -1474,7 +1458,5 @@
 					listbox->aktpage = -1;
 
-					status.screencalc = 2;
-					drawscreen(channellist, 0);
-					status.screencalc = 0;
+					drawscreen(channellist, 2, 0);
 					changetext(tmpnode, tmpaktlist->name);
 					tmpnode->handle = (char*)tmpaktlist;
@@ -1548,5 +1530,5 @@
 			selectchannel(listbox, sid, tid);
 			changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-			drawscreen(channellist, 0);
+			drawscreen(channellist, 0, 0);
 			continue;
 		}
@@ -1559,5 +1541,5 @@
 				epgchoice((struct channel*)listbox->select->handle);
 				changebutton(listmode, b1, b2, b3, b4, b5, b6, b7, b8, b9);
-				drawscreen(channellist, 0);
+				drawscreen(channellist, 0, 0);
 			}
 			continue;
@@ -1585,5 +1567,4 @@
 	status.markedchannel = NULL;
 	status.markmodus = 0;
-	status.screencalc = 0;
 	delmarkedscreennodes(channellist, 1);
 	delmarkedscreennodes(channellist, 2);
Index: /titan/titan/dir.h
===================================================================
--- /titan/titan/dir.h	(revision 16510)
+++ /titan/titan/dir.h	(revision 16511)
@@ -91,12 +91,13 @@
 		changetext(button, _("---"));
 
-	drawscreen(dir, 0);
+	drawscreen(dir, 0, 0);
 	addscreenrc(dir, filelist);
 
 	while(1)
 	{
-		if(ext != NULL) status.screencalc = 2;
-		rcret = waitrc(dir, 0, 0);
-		if(ext != NULL) status.screencalc = 0;
+		if(ext != NULL)
+			rcret = waitrc(dir, 0, 2);
+		else
+			rcret = waitrc(dir, 0, 0);
 
 		if(rcret == getrcconfigint("rcexit", NULL))
@@ -112,5 +113,5 @@
 			{
 				changetext(label, NULL);
-				drawscreen(dir, 0);
+				drawscreen(dir, 0, 0);
 			}
 			else if(filelist->select != NULL && filelist->select->input == NULL) //file
@@ -121,5 +122,5 @@
 				{
 					readlabelext(label, ret, ext);
-					drawscreen(dir, 0);
+					drawscreen(dir, 0, 0);
 				}
 				free(ret); ret = NULL;
@@ -141,5 +142,5 @@
 				}
 				if(ext != NULL)
-					drawscreen(dir, 0);
+					drawscreen(dir, 0, 0);
 				continue;
 			}
@@ -159,5 +160,5 @@
 			}
 			else if(ext != NULL)
-				drawscreen(dir, 0);
+				drawscreen(dir, 0, 0);
 		}
 
Index: /titan/titan/diseqcconfig.h
===================================================================
--- /titan/titan/diseqcconfig.h	(revision 16510)
+++ /titan/titan/diseqcconfig.h	(revision 16511)
@@ -184,5 +184,5 @@
 	free(diseqcnr); diseqcnr = NULL;
 
-	drawscreen(diseqcscreen, 0);
+	drawscreen(diseqcscreen, 0, 0);
 	addscreenrc(diseqcscreen, listbox);
 
@@ -191,6 +191,5 @@
 	{
 		addscreenrc(diseqcscreen, tmp);
-		status.screencalc = 2;
-		rcret = waitrc(diseqcscreen, 0, 0);
+		rcret = waitrc(diseqcscreen, 0, 2);
 		tmp = listbox->select;
 
@@ -209,6 +208,5 @@
 		addconfigscreentmpcheck(rotorpos->name, rotorpos, "000");
 
-		status.screencalc = 0;
-		drawscreen(diseqcscreen, 0);
+		drawscreen(diseqcscreen, 0, 0);
 
 		if(rcret == getrcconfigint("rcexit", NULL)) break;
@@ -228,5 +226,4 @@
 	changename(rotorpos, "rotorpos");
 
-	status.screencalc = 0;
 	delconfigtmpall();
 	delownerrc(diseqcscreen);
@@ -264,5 +261,5 @@
 	setchoiceboxselection(latpos, getconfig("longpos", NULL));
 
-	drawscreen(ownpos, 0);
+	drawscreen(ownpos, 0, 0);
 	addscreenrc(ownpos, listbox);
 
Index: /titan/titan/download.h
===================================================================
--- /titan/titan/download.h	(revision 16510)
+++ /titan/titan/download.h	(revision 16511)
@@ -5,5 +5,5 @@
 {
 	debug(1000, "in");
-	int rcret = -1, tmpscreencalc = 0, count = 0, ret = 0, fromthread = 0, sleeptime = 2;
+	int rcret = -1, count = 0, ret = 0, fromthread = 0, sleeptime = 2;
 	struct skin* download = getscreen("download");
 	struct skin* progress = getscreennode(download, "progress");
@@ -34,16 +34,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(download, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(download, framebuffer, 2);
 		status.rcowner = download;
 		bg = savescreen(download);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(download, 2);
+		drawscreen(download, 0, 2);
 	}
 	else
-		drawscreen(download, 0);
+		drawscreen(download, 0, 0);
 
 
@@ -82,5 +77,5 @@
 			free(tmpstr); tmpstr = NULL;
 		}
-		drawscreen(download, 0);
+		drawscreen(download, 0, 0);
 		if(rcret == getrcconfigint("rcexit", NULL)) break;
 		if(dnode->ret == 0)
@@ -103,5 +98,5 @@
 	else
 		changetext(file, _("wait for stopping download"));
-	drawscreen(download, 0);
+	drawscreen(download, 0, 0);
 	sockclose(&dnode->connfd);
 	sleep(sleeptime);
@@ -120,5 +115,4 @@
 		restorescreen(bg, download);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
@@ -129,5 +123,5 @@
 	{
 		clearscreen(download);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	}
 
Index: /titan/titan/epg.h
===================================================================
--- /titan/titan/epg.h	(revision 16510)
+++ /titan/titan/epg.h	(revision 16511)
@@ -106,5 +106,5 @@
 	}
 
-	drawscreen(singleepg, 0);
+	drawscreen(singleepg, 0, 0);
 	addscreenrc(singleepg, listbox);
 
@@ -112,7 +112,5 @@
 	{
 		status.epgchannel = chnode;
-		status.screencalc = 2;
-		rcret = waitrc(singleepg, 0, 0);
-		status.screencalc = 0;
+		rcret = waitrc(singleepg, 0, 2);
 		if((rcret == getrcconfigint("rcexit", NULL)) || (rcret == getrcconfigint("rcepg", NULL))) break;
 		if(rcret == getrcconfigint("rcinfo", NULL)) break;
@@ -128,5 +126,5 @@
 				clearscreen(singleepg);
 				screenepg(chnode, (struct epg*)listbox->select->handle, 0);
-				//drawscreen(singleepg, 0);
+				//drawscreen(singleepg, 0, 0);
 				break;
 			}
@@ -136,5 +134,5 @@
 			clearscreen(singleepg);
 			screenmultiepg(chnode, NULL, 0);
-			//drawscreen(singleepg, 0);
+			//drawscreen(singleepg, 0, 0);
 			break;
 		}
@@ -143,5 +141,5 @@
 			clearscreen(singleepg);
 			screengmultiepg(chnode, NULL, 0);
-			//drawscreen(singleepg, 0);
+			//drawscreen(singleepg, 0, 0);
 			break;
 		}
@@ -157,10 +155,9 @@
 				goto start;
 			}
-			drawscreen(singleepg, 0);
+			drawscreen(singleepg, 0, 0);
 		}
 	}
 
 	status.epgchannel = NULL;
-	status.screencalc = 0;
 	delmarkedscreennodes(singleepg, 1);
 	delownerrc(singleepg);
@@ -274,5 +271,5 @@
 	}
 
-	drawscreen(screenepg, 0);
+	drawscreen(screenepg, 0, 0);
 	addscreenrc(screenepg, epgdesc);
 
@@ -304,5 +301,5 @@
 			clearscreen(screenepg);
 			screensingleepg(chnode, NULL, 0);
-			//drawscreen(screenepg, 0);
+			//drawscreen(screenepg, 0, 0);
 			break;
 		}
@@ -311,5 +308,5 @@
 			clearscreen(screenepg);
 			screenmultiepg(chnode, NULL, 0);
-			//drawscreen(screenepg, 0);
+			//drawscreen(screenepg, 0, 0);
 			break;
 		}
@@ -318,5 +315,5 @@
 			clearscreen(screenepg);
 			screengmultiepg(chnode, NULL, 0);
-			//drawscreen(screenepg, 0);
+			//drawscreen(screenepg, 0, 0);
 			break;
 		}
@@ -325,5 +322,5 @@
 			clearscreen(screenepg);
 			ret = addrecepg(chnode, epgnode, NULL);
-			//drawscreen(screenepg, 0);
+			//drawscreen(screenepg, 0, 0);
 			goto start;
 		}
@@ -334,5 +331,5 @@
 				clearscreen(screenepg);
 				screensingleepg(chnode, NULL, 0);
-				//drawscreen(screenepg, 0);
+				//drawscreen(screenepg, 0, 0);
 				break;
 			}
@@ -341,5 +338,5 @@
 				clearscreen(screenepg);
 				screenmultiepg(chnode, NULL, 0);				
-				//drawscreen(screenepg, 0);
+				//drawscreen(screenepg, 0, 0);
 				break;
 			}
@@ -357,5 +354,5 @@
 					clearscreen(screenepg);
 					startplugin(epgnode->title);
-					drawscreen(screenepg, 0);
+					drawscreen(screenepg, 0, 0);
 				}
 			}
Index: /titan/titan/epgsearch.h
===================================================================
--- /titan/titan/epgsearch.h	(revision 16510)
+++ /titan/titan/epgsearch.h	(revision 16511)
@@ -94,5 +94,5 @@
   
 	addscreenrc(epgsearch, listbox);
-	drawscreen(epgsearch, 0);
+	drawscreen(epgsearch, 0, 0);
   
 	while(1)
@@ -115,5 +115,5 @@
 			{
 				ret = addrecepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, NULL);
-				drawscreen(epgsearch, 0);
+				drawscreen(epgsearch, 0, 0);
 				continue;
 			}
@@ -129,5 +129,5 @@
 				free(search); search = NULL;
 			}
-			drawscreen(epgsearch, 0);
+			drawscreen(epgsearch, 0, 0);
 			continue;
 		}
@@ -142,5 +142,5 @@
 				free(search); search = NULL;
 			}
-			drawscreen(epgsearch, 0);
+			drawscreen(epgsearch, 0, 0);
 			continue;
 		}
@@ -155,5 +155,5 @@
 				free(search); search = NULL;
 			}
-			drawscreen(epgsearch, 0);
+			drawscreen(epgsearch, 0, 0);
 			continue;
 		}
Index: /titan/titan/epgsettings.h
===================================================================
--- /titan/titan/epgsettings.h	(revision 16510)
+++ /titan/titan/epgsettings.h	(revision 16511)
@@ -40,5 +40,5 @@
 	createepgscanlist(scanlist, listbox);
 
-	drawscreen(scanlist, 0);
+	drawscreen(scanlist, 0, 0);
 	addscreenrc(scanlist, listbox);
 
@@ -56,5 +56,5 @@
 				delmarkedscreennodes(scanlist, 1);
 				createepgscanlist(scanlist, listbox);
-				drawscreen(scanlist, 0);
+				drawscreen(scanlist, 0, 0);
 			}
 		}
@@ -81,5 +81,5 @@
 			}
 
-			drawscreen(scanlist, 0);
+			drawscreen(scanlist, 0, 0);
 		}
 	}
@@ -156,5 +156,5 @@
 	setchoiceboxselection(epgsave, getconfig("epgsave", NULL));
 
-	drawscreen(epgsettings, 0);
+	drawscreen(epgsettings, 0, 0);
 	addscreenrc(epgsettings, listbox);
 
@@ -194,5 +194,5 @@
 				free(ret);
 
-				drawscreen(epgsettings, 0);
+				drawscreen(epgsettings, 0, 0);
 			}
 		}
@@ -201,5 +201,5 @@
 			resetepg();
 			textbox(_("Message"), _("EPG resetet and now clear."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
-			drawscreen(epgsettings, 0);
+			drawscreen(epgsettings, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcyellow", NULL))
@@ -207,5 +207,5 @@
 			clearscreen(epgsettings);
 			screenepgscanlist();
-			drawscreen(epgsettings, 0);
+			drawscreen(epgsettings, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcblue", NULL))
@@ -216,5 +216,5 @@
 			textbox(_("EPG Scan Log"), _(log), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 600, 0, 0);
 			free(log); log = NULL;
-			drawscreen(epgsettings, 0);
+			drawscreen(epgsettings, 0, 0);
 		}
 	}
Index: /titan/titan/extensions.h
===================================================================
--- /titan/titan/extensions.h	(revision 16510)
+++ /titan/titan/extensions.h	(revision 16511)
@@ -73,5 +73,5 @@
 	{
 		struct skin* load = getscreen("loading");
-		drawscreen(load, 0);
+		drawscreen(load, 0, 0);
 
 		system("cp -a /mnt/ipkg/* /var/usr/lib/ipkg");
Index: /titan/titan/filelist.h
===================================================================
--- /titan/titan/filelist.h	(revision 16510)
+++ /titan/titan/filelist.h	(revision 16511)
@@ -728,5 +728,5 @@
 
 	createfilelist(input, filelist, 0);
-	drawscreen(input, 0);
+	drawscreen(input, 0, 0);
 	debug(1000, "out");
 }
Index: /titan/titan/global.h
===================================================================
--- /titan/titan/global.h	(revision 16510)
+++ /titan/titan/global.h	(revision 16511)
@@ -3754,5 +3754,5 @@
 		}
 		*/
-		drawscreen(playpolicy, 0);
+		drawscreen(playpolicy, 0, 0);
 		while(1)
 		{
Index: /titan/titan/gmultiepg.h
===================================================================
--- /titan/titan/gmultiepg.h	(revision 16510)
+++ /titan/titan/gmultiepg.h	(revision 16511)
@@ -413,13 +413,10 @@
 	{
 		if(listbox->select == NULL)
-		{
-			status.screencalc = 2;
-			drawscreen(gmultiepg, 0);
-			status.screencalc = 0;
-		}
+			drawscreen(gmultiepg, 2, 0);
+
 		if(listbox->select != NULL)
 			status.markedchannel = (struct channel*)listbox->select->handle;
 	}
-	drawscreen(gmultiepg, 0);
+	drawscreen(gmultiepg, 0, 0);
 }
 
@@ -503,7 +500,5 @@
 
 	//chalc screen, so we have all infos
-	status.screencalc = 2;
-	drawscreen(gmultiepg, 0);
-	status.screencalc = 0;
+	drawscreen(gmultiepg, 2, 0);
 
 	time_t addtime = (listbox->iwidth / zoom) * 60;
@@ -603,7 +598,5 @@
 
 	tmpstr = NULL;
-	status.screencalc = 2;
-	drawscreen(gmultiepg, 0);
-	status.screencalc = 0;
+	drawscreen(gmultiepg, 2, 0);
 	addscreenrc(gmultiepg, listbox);
 	listbox->aktpage = channellistbox->aktpage;
@@ -615,7 +608,5 @@
 	while(1)
 	{
-		status.screencalc = 2;
-		rcret = waitrc(gmultiepg, 0, 0);
-		status.screencalc = 0;
+		rcret = waitrc(gmultiepg, 0, 2);
 
 		channellistbox->aktpage = listbox->aktpage;
@@ -634,5 +625,5 @@
 				clearscreen(gmultiepg);
 				screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 1);
-				drawscreen(gmultiepg, 0);
+				drawscreen(gmultiepg, 0, 0);
 			}
 		}
@@ -644,5 +635,5 @@
 				clearscreen(gmultiepg);
 				screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 0);
-				//drawscreen(gmultiepg, 0);
+				//drawscreen(gmultiepg, 0, 0);
 				break;
 			}
@@ -654,5 +645,5 @@
 				clearscreen(gmultiepg);
 				screensingleepg((struct channel*)listbox->select->handle, NULL, 0);
-				//drawscreen(gmultiepg, 0);
+				//drawscreen(gmultiepg, 0, 0);
 				break;
 			}
@@ -664,5 +655,5 @@
 				clearscreen(gmultiepg);
 				screenmultiepg((struct channel*)listbox->select->handle, NULL, 0);
-				//drawscreen(gmultiepg, 0);
+				//drawscreen(gmultiepg, 0, 0);
 				break;
 			}
@@ -755,9 +746,7 @@
 			}
 			createtimeline(gmultiepg, timeline, akttime, zoom);
-			status.screencalc = 2;
-			drawscreen(gmultiepg, 0);
-			status.screencalc = 0;
+			drawscreen(gmultiepg, 2, 0);
 			gmultiepgfilldesc(listbox, epgdesc);
-			drawscreen(gmultiepg, 0);
+			drawscreen(gmultiepg, 0, 0);
 			if(listbox->select != NULL)
 				aktchannel = (struct channel*)listbox->select->handle;
@@ -784,9 +773,7 @@
 				showprovidergmepgchannel(gmultiepg, channellistbox, listbox, timeline, providernode, zoom, akttime, aktchannel, marklast);
 			createtimeline(gmultiepg, timeline, akttime, zoom);
-			status.screencalc = 2;
-			drawscreen(gmultiepg, 0);
-			status.screencalc = 0;
+			drawscreen(gmultiepg, 2, 0);
 			gmultiepgfilldesc(listbox, epgdesc);
-			drawscreen(gmultiepg, 0);
+			drawscreen(gmultiepg, 0, 0);
 			if(listbox->select != NULL)
 				aktchannel = (struct channel*)listbox->select->handle;
@@ -798,10 +785,10 @@
 			clearscreen(gmultiepg);
 			ret = addrecepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, NULL);
-			drawscreen(gmultiepg, 0);
+			drawscreen(gmultiepg, 0, 0);
 			continue;
 		}
 
 		gmultiepgfilldesc(listbox, epgdesc);
-		drawscreen(gmultiepg, 0);
+		drawscreen(gmultiepg, 0, 0);
 		if(listbox->select != NULL)
 			aktchannel = (struct channel*)listbox->select->handle;
@@ -810,5 +797,4 @@
 	status.markedchannel = NULL;
 	status.markmodus = 0;
-	status.screencalc = 0;
 	delmarkedscreennodes(gmultiepg, 1);
 	delmarkedscreennodes(gmultiepg, 3);
Index: /titan/titan/harddisk.h
===================================================================
--- /titan/titan/harddisk.h	(revision 16510)
+++ /titan/titan/harddisk.h	(revision 16511)
@@ -145,5 +145,5 @@
 	}
 
-	drawscreen(screen, 0);
+	drawscreen(screen, 0, 0);
 	addscreenrc(screen, listbox);
 
@@ -248,5 +248,5 @@
 	}
 
-	drawscreen(screen, 0);
+	drawscreen(screen, 0, 0);
 	addscreenrc(screen, listbox);
 
@@ -326,5 +326,5 @@
 					system("hotplug.sh first");
 			}
-			drawscreen(screen, 0);
+			drawscreen(screen, 0, 0);
 		}
 	}
@@ -478,5 +478,5 @@
 	}
 
-	drawscreen(screen, 0);
+	drawscreen(screen, 0, 0);
 	addscreenrc(screen, listbox);
 
@@ -629,5 +629,5 @@
 	}
 		
-	drawscreen(sleep_config, 0);
+	drawscreen(sleep_config, 0, 0);
 	tmp = listbox->select;
 	
Index: /titan/titan/header.h
===================================================================
--- /titan/titan/header.h	(revision 16510)
+++ /titan/titan/header.h	(revision 16511)
@@ -455,5 +455,5 @@
 struct skin* getscreen(char* screenname);
 int calcrheight(struct skin* node, struct skin* parent);
-int drawscreen(struct skin* node, int flag);
+int drawscreen(struct skin* node, int screencalc, int flag);
 struct skin* addscreennode(struct skin* node, char* line, struct skin* last);
 int changetext(struct skin* node, char* text);
Index: /titan/titan/help.h
===================================================================
--- /titan/titan/help.h	(revision 16510)
+++ /titan/titan/help.h	(revision 16511)
@@ -35,5 +35,5 @@
 	free(buf); buf = NULL;
 
-	drawscreen(help, 0);
+	drawscreen(help, 0, 0);
 	addscreenrc(help, textbox);
 	delrc(getrcconfigint("rchelp", NULL), help, textbox);
Index: /titan/titan/httpdsettings.h
===================================================================
--- /titan/titan/httpdsettings.h	(revision 16510)
+++ /titan/titan/httpdsettings.h	(revision 16511)
@@ -63,5 +63,5 @@
 	}
 
-	drawscreen(httpdsettings, 0);
+	drawscreen(httpdsettings, 0, 0);
 	addscreenrc(httpdsettings, listbox);
 
Index: /titan/titan/inadyn.h
===================================================================
--- /titan/titan/inadyn.h	(revision 16510)
+++ /titan/titan/inadyn.h	(revision 16511)
@@ -132,5 +132,5 @@
 	free(ihost); ihost = NULL;
 
-	drawscreen(inadyn, 0);
+	drawscreen(inadyn, 0, 0);
 	addscreenrc(inadyn, listbox);
 
@@ -157,5 +157,5 @@
 				else
 					textbox(_("Message"), _("DYNDNS not started,\nPlease check your config."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 10, 0);
-				drawscreen(inadyn, 0);
+				drawscreen(inadyn, 0, 0);
 			}
 		}
@@ -165,5 +165,5 @@
 			system("killall inadyn; sleep 2; killall -9 inadyn");
 			textbox(_("Message"), _("DYNDNS now stopped"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 10, 0);
-			drawscreen(inadyn, 0);
+			drawscreen(inadyn, 0, 0);
 		}
 	}
Index: /titan/titan/info.h
===================================================================
--- /titan/titan/info.h	(revision 16510)
+++ /titan/titan/info.h	(revision 16511)
@@ -34,5 +34,5 @@
 		free(tmpstr); tmpstr = NULL;
 	}
-	drawscreen(systeminfo, 0);
+	drawscreen(systeminfo, 0, 0);
 
 	while(1)
Index: /titan/titan/infobar.h
===================================================================
--- /titan/titan/infobar.h	(revision 16510)
+++ /titan/titan/infobar.h	(revision 16511)
@@ -49,5 +49,5 @@
 				status.infobar = 1;
 				infobar = infobar1;
-				drawscreen(infobar, 4);
+				drawscreen(infobar, 0, 4);
 				continue;
 			}
@@ -82,5 +82,5 @@
 			if(screensaver != NULL) screensaver->flag = 0;
 			deinitscreensaver();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			infobartimeout = 0;
 		}
@@ -188,5 +188,5 @@
 			screenrecordstop();
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -207,5 +207,5 @@
 					status.servicetype = 0;
 			}
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			if(rcret == getrcconfigint("rcfav", NULL))	
 				ret = screenchannellist(NULL, NULL, 2);
@@ -214,5 +214,5 @@
 			if(ret >= 20 || ret < 0)
 				status.servicetype = tmpservicetype;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			status.infobaraktiv = 1;
 			status.infobar = 2;
@@ -226,5 +226,5 @@
 			status.infobar = 0;
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -241,8 +241,8 @@
 				tmpnr = oitoa(status.aktservice->channel->txtpid);
 				tmpstr = ostrcat(tmpstr, tmpnr, 1, 1);
-				drawscreen(skin, 0);
+				drawscreen(skin, 0, 0);
 				system(tmpstr);
 				free(tmpstr); tmpstr = NULL; tmpnr = NULL;
-				drawscreen(skin, 0);
+				drawscreen(skin, 0, 0);
 				subtitlepause(0);
 			}
@@ -256,5 +256,5 @@
 			screenrecorddirect();
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -269,5 +269,5 @@
 			status.infobaraktiv = 1;
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -282,5 +282,5 @@
 			status.infobaraktiv = 1;
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -292,5 +292,5 @@
 			clearscreen(infobar);
 			screenvideomode(0);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -302,5 +302,5 @@
 			clearscreen(infobar);
 			screenlinkedchannel();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -312,5 +312,5 @@
 			clearscreen(infobar);
 			screenpowerofftimer();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -322,5 +322,5 @@
 			clearscreen(infobar);
 			screensubtitle();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -332,5 +332,5 @@
 			clearscreen(infobar);
 			screenaudiotrack();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -343,5 +343,5 @@
 			screenkeyactions(0, 0);
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -362,5 +362,5 @@
 
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -381,5 +381,5 @@
 			}
 			status.infobaraktiv = 1;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -395,5 +395,5 @@
 			status.updatevfd = START;
 			status.infobaraktiv = 1;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -406,5 +406,5 @@
 			clearscreen(infobar);
 			epgchoice(NULL);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			status.infobaraktiv = 1;
 			subtitlepause(0);
@@ -417,5 +417,5 @@
 			clearscreen(infobar);
 			switchvideomode();
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			subtitlepause(0);
 			continue;
@@ -430,5 +430,5 @@
 					epgchoice(NULL);
 					status.infobar = 0;
-					drawscreen(skin, 0);
+					drawscreen(skin, 0, 0);
 					subtitlepause(0);
 				}
@@ -436,5 +436,5 @@
 				{
 					status.infobar = 0;
-					drawscreen(skin, 0);
+					drawscreen(skin, 0, 0);
 					subtitlepause(0);
 				}
@@ -442,5 +442,5 @@
 				{
 					infobar = infobar2;
-					drawscreen(infobar, 0);
+					drawscreen(infobar, 0, 0);
 				}
 			}
@@ -450,5 +450,5 @@
 				status.infobar = 1;
 				infobar = infobar1;
-				drawscreen(infobar, 4);
+				drawscreen(infobar, 0, 4);
 			}
 			continue;
@@ -460,5 +460,5 @@
 			status.infobaraktiv = 0;
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			switch(getconfigint("poweraktion", NULL))
 			{
@@ -481,5 +481,5 @@
 			}
 			status.updatevfd = START;
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			status.infobaraktiv = 1;
 			subtitlepause(0);
@@ -490,12 +490,12 @@
 			subtitlepause(1);
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			screenchannelhistory();
 			infobartimeout = 0;
 			infobar = infobar1;
 			if(status.infobar == 0)
-				drawscreen(infobar, 4);
-			else
-				drawscreen(infobar, 0);
+				drawscreen(infobar, 0, 4);
+			else
+				drawscreen(infobar, 0, 0);
 			status.infobar = 1;
 			continue;
@@ -505,5 +505,5 @@
 			subtitlepause(1);
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			if(status.lastservice->channel != NULL)
 			{
@@ -515,7 +515,7 @@
 			infobar = infobar1;
 			if(status.infobar == 0)
-				drawscreen(infobar, 4);
-			else
-				drawscreen(infobar, 0);
+				drawscreen(infobar, 0, 4);
+			else
+				drawscreen(infobar, 0, 0);
 			status.infobar = 1;
 			continue;
@@ -526,5 +526,5 @@
 			zapup();
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			infobartimeout = 0;
 			status.infobar = 2;
@@ -536,5 +536,5 @@
 			zapdown();
 			clearscreen(infobar);
-			drawscreen(skin, 0);
+			drawscreen(skin, 0, 0);
 			infobartimeout = 0;
 			status.infobar = 2;
@@ -554,10 +554,10 @@
 			{
 				clearscreen(infobar);
-				drawscreen(infobar, 0);
+				drawscreen(infobar, 0, 0);
 			}
 			else
 			{
 				status.infobar = 0;
-				drawscreen(skin, 0);
+				drawscreen(skin, 0, 0);
 				subtitlepause(0);
 			}
Index: /titan/titan/inputhelp.h
===================================================================
--- /titan/titan/inputhelp.h	(revision 16510)
+++ /titan/titan/inputhelp.h	(revision 16511)
@@ -6,10 +6,10 @@
 	inputboxff(inputhelp, inputbox, flag);
 	inputboxchar(inputhelp, inputbox, num, flag);
-	drawscreen(inputhelp, flag);
+	drawscreen(inputhelp, 0, flag);
 }
 
 char* screeninputhelp(char* text, int flag)
 {
-	int rcret = 0, tmpscreencalc = 0;
+	int rcret = 0;
 	struct skin* inputhelp = getscreen("inputhelp");
 	struct skin* grid = NULL;
@@ -27,7 +27,5 @@
 	}
 	changeinput(inputbox, text);
-	tmpscreencalc = status.screencalc;
-	status.screencalc = 0;
-	drawscreen(inputhelp, flag);
+	drawscreen(inputhelp, 0, flag);
 	addscreenrc(inputhelp, grid);
 
@@ -83,5 +81,5 @@
 				{
 					changeinput(inputbox, NULL);
-					drawscreen(inputhelp, flag);
+					drawscreen(inputhelp, 0, flag);
 					continue;
 				}
@@ -89,5 +87,5 @@
 				{
 					inputboxleft(inputhelp, inputbox, flag);
-					drawscreen(inputhelp, flag);
+					drawscreen(inputhelp, 0, flag);
 					continue;
 				}
@@ -95,5 +93,5 @@
 				{
 					inputboxright(inputhelp, inputbox, flag);
-					drawscreen(inputhelp, flag);
+					drawscreen(inputhelp, 0, flag);
 					continue;
 				}
@@ -116,5 +114,5 @@
 						addscreenrc(inputhelp, grid);
 					}
-					drawscreen(inputhelp, flag);
+					drawscreen(inputhelp, 0, flag);
 					continue;
 				}
@@ -123,5 +121,5 @@
 					inputboxff(inputhelp, inputbox, flag);
 					inputboxchar(inputhelp, inputbox, ' ', flag);
-					drawscreen(inputhelp, flag);
+					drawscreen(inputhelp, 0, flag);
 					continue;
 				}
@@ -135,6 +133,5 @@
 	delownerrc(inputhelp);
 	clearscreen(inputhelp);
-	drawscreen(skin, flag);
-	status.screencalc = tmpscreencalc;
+	drawscreen(skin, 0, flag);
 	return tmpstr;
 }
Index: /titan/titan/language.h
===================================================================
--- /titan/titan/language.h	(revision 16510)
+++ /titan/titan/language.h	(revision 16511)
@@ -20,5 +20,5 @@
 	setlistboxselection(listbox, getconfig("lang", NULL));
 
-	drawscreen(language, 0);
+	drawscreen(language, 0, 0);
 	addscreenrc(language, listbox);
 
Index: /titan/titan/linkedchannel.h
===================================================================
--- /titan/titan/linkedchannel.h	(revision 16510)
+++ /titan/titan/linkedchannel.h	(revision 16511)
@@ -130,5 +130,5 @@
 	if(treffer == 0) listbox->aktline = 1;
 
-	drawscreen(linkedchannel, 0);
+	drawscreen(linkedchannel, 0, 0);
 
 	while(1)
Index: /titan/titan/listedit.h
===================================================================
--- /titan/titan/listedit.h	(revision 16510)
+++ /titan/titan/listedit.h	(revision 16511)
@@ -53,5 +53,5 @@
 	}
 
-	drawscreen(listedit, 0);
+	drawscreen(listedit, 0, 0);
 	addscreenrc(listedit, listbox);
 
Index: /titan/titan/lnbconfig.h
===================================================================
--- /titan/titan/lnbconfig.h	(revision 16510)
+++ /titan/titan/lnbconfig.h	(revision 16511)
@@ -178,5 +178,5 @@
 	free(lnbnr); lnbnr = NULL;
 
-	drawscreen(lnbscreen, 0);
+	drawscreen(lnbscreen, 0, 0);
 	addscreenrc(lnbscreen, listbox);
 
@@ -185,6 +185,5 @@
 	{
 		addscreenrc(lnbscreen, tmp);
-		status.screencalc = 2;
-		rcret = waitrc(lnbscreen, 0, 0);
+		rcret = waitrc(lnbscreen, 0, 2);
 		tmp = listbox->select;
 
@@ -209,6 +208,5 @@
 		}
 
-		status.screencalc = 0;
-		drawscreen(lnbscreen, 0);
+		drawscreen(lnbscreen, 0, 0);
 
 		if(rcret == getrcconfigint("rcexit", NULL)) break;
@@ -230,5 +228,4 @@
 	changename(satcrfrequ2, "satcrfrequ2");
 
-	status.screencalc = 0;
 	delconfigtmpall();
 	delownerrc(lnbscreen);
Index: /titan/titan/mainbouquets.h
===================================================================
--- /titan/titan/mainbouquets.h	(revision 16510)
+++ /titan/titan/mainbouquets.h	(revision 16511)
@@ -26,5 +26,5 @@
 	}
 
-	drawscreen(bouquetlist, 0);
+	drawscreen(bouquetlist, 0, 0);
 	addscreenrc(bouquetlist, listbox);
 
Index: /titan/titan/mediadbsettings.h
===================================================================
--- /titan/titan/mediadbsettings.h	(revision 16510)
+++ /titan/titan/mediadbsettings.h	(revision 16511)
@@ -40,5 +40,5 @@
 	setchoiceboxselection(mediadbscantimeout, getconfig("mediadbscantimeout", NULL));
 
-	drawscreen(mediadbsettings, 0);
+	drawscreen(mediadbsettings, 0, 0);
 	addscreenrc(mediadbsettings, listbox);
 
@@ -82,5 +82,5 @@
 				free(ret);
 
-				drawscreen(mediadbsettings, 0);
+				drawscreen(mediadbsettings, 0, 0);
 			}
 		}
Index: /titan/titan/menu.h
===================================================================
--- /titan/titan/menu.h	(revision 16510)
+++ /titan/titan/menu.h	(revision 16511)
@@ -55,7 +55,7 @@
 
 	if(flag == 1)
-		drawscreen(menu, 4);
+		drawscreen(menu, 0, 4);
 	else
-		drawscreen(menu, 0);
+		drawscreen(menu, 0, 0);
 	addscreenrc(menu, listbox);
 	if(listbox->select != NULL)
@@ -86,5 +86,5 @@
 			if(ret != 0)
 				textbox(_("Message"), _("Menu not implemented !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
-			drawscreen(menu, 0);
+			drawscreen(menu, 0, 0);
 		}
 		if(listbox->select != NULL)
Index: /titan/titan/menulist.h
===================================================================
--- /titan/titan/menulist.h	(revision 16510)
+++ /titan/titan/menulist.h	(revision 16511)
@@ -123,5 +123,5 @@
 {
 	debug(1000, "in");
-	int rcret = 0, tmpscreencalc = 0, fromthread = 0;
+	int rcret = 0, fromthread = 0;
 	struct skin* framebuffer = getscreen("framebuffer");
 	struct skin* tmp = NULL;
@@ -244,16 +244,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(screen, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(screen, framebuffer, 2);
 		status.rcowner = screen;
 		bg = savescreen(screen);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(screen, 2);
-	}
-	else
-		drawscreen(screen,0);
+		drawscreen(screen, 0, 2);
+	}
+	else
+		drawscreen(screen, 0, 0);
 
 	addscreenrc(screen, listbox);
@@ -292,5 +287,4 @@
 		restorescreen(bg, screen);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
Index: /titan/titan/moduleconfig.h
===================================================================
--- /titan/titan/moduleconfig.h	(revision 16510)
+++ /titan/titan/moduleconfig.h	(revision 16511)
@@ -79,5 +79,5 @@
 	}
 
-	drawscreen(moduleconfig, 0);
+	drawscreen(moduleconfig, 0, 0);
 	addscreenrc(moduleconfig, listbox);
 
Index: /titan/titan/multiepg.h
===================================================================
--- /titan/titan/multiepg.h	(revision 16510)
+++ /titan/titan/multiepg.h	(revision 16511)
@@ -396,13 +396,10 @@
 	{
 		if(listbox->select == NULL)
-		{
-			status.screencalc = 2;
-			drawscreen(multiepg, 0);
-			status.screencalc = 0;
-		}
+			drawscreen(multiepg, 2, 0);
+
 		if(listbox->select != NULL)
 			status.markedchannel = (struct channel*)listbox->select->handle;
 	}
-	drawscreen(multiepg, 0);
+	drawscreen(multiepg, 0, 0);
 }
 
@@ -509,7 +506,5 @@
 
 	tmpstr = NULL;
-	status.screencalc = 2;
-	drawscreen(multiepg, 0);
-	status.screencalc = 0;
+	drawscreen(multiepg, 2, 0);
 	addscreenrc(multiepg, listbox);
 
@@ -518,7 +513,5 @@
 	while(1)
 	{
-		status.screencalc = 2;
-		rcret = waitrc(multiepg, 0, 0);
-		status.screencalc = 0;
+		rcret = waitrc(multiepg, 0, 2);
 
 		if((rcret == getrcconfigint("rcexit", NULL)) || (rcret == getrcconfigint("rcepg", NULL))) break;
@@ -535,5 +528,5 @@
 				clearscreen(multiepg);
 				screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 1);
-				drawscreen(multiepg, 0);
+				drawscreen(multiepg, 0, 0);
 			}
 		}
@@ -545,5 +538,5 @@
 				clearscreen(multiepg);
 				screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 0);
-				//drawscreen(multiepg, 0);
+				//drawscreen(multiepg, 0, 0);
 				break;
 			}
@@ -555,5 +548,5 @@
 				clearscreen(multiepg);
 				screensingleepg((struct channel*)listbox->select->handle, NULL, 0);
-				//drawscreen(multiepg, 0);
+				//drawscreen(multiepg, 0, 0);
 				break;
 			}
@@ -565,5 +558,5 @@
 				clearscreen(multiepg);
 				screengmultiepg((struct channel*)listbox->select->handle, NULL, 0);
-				//drawscreen(multiepg, 0);
+				//drawscreen(multiepg, 0, 0);
 				break;
 			}
@@ -630,5 +623,5 @@
 				}
 			}
-			drawscreen(multiepg, 0);
+			drawscreen(multiepg, 0, 0);
 			continue;
 		}
@@ -649,5 +642,5 @@
 			else if(list == PROVIDERCHANNEL)
 				showprovidermepgchannel(multiepg, listbox, providernode, epgnr);
-			drawscreen(multiepg, 0);
+			drawscreen(multiepg, 0, 0);
 			continue;
 		}
@@ -657,14 +650,13 @@
 			clearscreen(multiepg);
 			ret = addrecepg((struct channel*)listbox->select->handle, readepgdesc((struct channel*)listbox->select->handle, epgnr), NULL);
-			drawscreen(multiepg, 0);
+			drawscreen(multiepg, 0, 0);
 			continue;
 		}
 
-		drawscreen(multiepg, 0);
+		drawscreen(multiepg, 0, 0);
 	}
 
 	status.markedchannel = NULL;
 	status.markmodus = 0;
-	status.screencalc = 0;
 	delmarkedscreennodes(multiepg, 1);
 	delownerrc(multiepg);
Index: /titan/titan/mute.h
===================================================================
--- /titan/titan/mute.h	(revision 16510)
+++ /titan/titan/mute.h	(revision 16511)
@@ -8,5 +8,4 @@
 void screenmute(struct skin* screen, struct skin* node, int flag)
 {
-	int tmpscreencalc = 0;
 	struct skin* framebuffer = getscreen("framebuffer");
 	struct skin* mute = getscreen("mute");
@@ -30,11 +29,8 @@
 			free(status.drawallwaysbg[0]);
 		status.drawallwaysbg[0] = savescreen(mute);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
 		if(flag == 2 || flag == 3)
-			drawscreen(mute, 2);
+			drawscreen(mute, 0, 2);
 		else
-			drawscreen(mute, 0);
-		status.screencalc = tmpscreencalc;
+			drawscreen(mute, 0, 0);
 		status.drawallways[0] = mute;
 	}
Index: /titan/titan/network.h
===================================================================
--- /titan/titan/network.h	(revision 16510)
+++ /titan/titan/network.h	(revision 16511)
@@ -248,5 +248,5 @@
 	char* tmpstr = NULL;
 		
-	drawscreen(network, 0);
+	drawscreen(network, 0, 0);
 	addscreenrc(network, lan);
 	while(1)
@@ -273,5 +273,5 @@
 				internet->text = ostrcat(internet->text, "ERROR", 1, 0);
 			free(tmpstr); tmpstr=NULL;
-			drawscreen(network, 0);
+			drawscreen(network, 0, 0);
 		}
 	}
@@ -404,5 +404,5 @@
 	listbox->aktline = 1;
 
-	drawscreen(network, 0);
+	drawscreen(network, 0, 0);
 	addscreenrc(network, listbox);
 
@@ -428,5 +428,5 @@
 				break;
 			}
-			drawscreen(network, 0);
+			drawscreen(network, 0, 0);
 		}
 
@@ -444,5 +444,5 @@
 					nethidden(ipaddresse, netmask, gateway, dnsserver1, dnsserver2, YES);
 
-				drawscreen(network, 0);
+				drawscreen(network, 0, 0);
 				tmp_dhcp = atoi(listbox->select->ret);
 			}
@@ -549,5 +549,5 @@
 	}
 
-	drawscreen(interfacelist, 0);
+	drawscreen(interfacelist, 0, 0);
 	addscreenrc(interfacelist, listbox);
 
@@ -615,5 +615,5 @@
 	free(wkey); wkey = NULL;
 
-	drawscreen(wlan, 0);
+	drawscreen(wlan, 0, 0);
 	addscreenrc(wlan, listbox);
 
@@ -644,5 +644,5 @@
 				listbox->aktpage = -1;
 				tmp = tmp2;
-				drawscreen(wlan, 0);
+				drawscreen(wlan, 0, 0);
 			}
 			else
@@ -677,5 +677,5 @@
 				listbox->aktpage = -1;
 				tmp = tmp2;
-				drawscreen(wlan, 0);
+				drawscreen(wlan, 0, 0);
 			}
 			else
@@ -700,5 +700,5 @@
 				else
 					textbox(_("Message"), _("WLAN not started,\nPlease check your config."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 10, 0);
-				drawscreen(wlan, 0);
+				drawscreen(wlan, 0, 0);
 			}
 		}
@@ -722,5 +722,5 @@
 			if(tmp1 != NULL)
 				changetext(tmp1, _("searching..."));
-			drawscreen(wlan, 0);
+			drawscreen(wlan, 0, 0);
 
 			system("wlan.sh notstart");
@@ -744,5 +744,5 @@
 				free(tmpstr); tmpstr = NULL;
 			}
-			drawscreen(wlan, 0);
+			drawscreen(wlan, 0, 0);
 		}
 
@@ -751,5 +751,5 @@
 			system("killall wpa_supplicant; sleep 2; killall -9 wpa_supplicant");
 			textbox(_("Message"), _("WLAN now stopped"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 10, 0);
-			drawscreen(wlan, 0);
+			drawscreen(wlan, 0, 0);
 		}
 		
@@ -759,5 +759,5 @@
 			textbox(_("WLAN LOG"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 600, 0, 0);
 			free(tmpstr); tmpstr = NULL;
-			drawscreen(wlan, 0);
+			drawscreen(wlan, 0, 0);
 		}
 	}
Index: /titan/titan/numinput.h
===================================================================
--- /titan/titan/numinput.h	(revision 16510)
+++ /titan/titan/numinput.h	(revision 16511)
@@ -5,5 +5,5 @@
 {
 	debug(1000, "in");
-	int rcret = -1, tmpscreencalc = 0, fromthread = 0, height = 0;
+	int rcret = -1, fromthread = 0, height = 0;
 	struct skin* numinput = getscreen("numinput");
 	struct skin* input = getscreennode(numinput, "input");
@@ -33,16 +33,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(numinput, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(numinput, framebuffer, 2);
 		status.rcowner = numinput;
 		bg = savescreen(numinput);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(numinput, 2);
+		drawscreen(numinput, 0, 2);
 	}
 	else
-		drawscreen(numinput, 0);
+		drawscreen(numinput, 0, 0);
 	addscreenrc(numinput, input);
 
@@ -65,5 +60,4 @@
 		restorescreen(bg, numinput);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
@@ -74,5 +68,5 @@
 	{
 		clearscreen(numinput);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	}
 
Index: /titan/titan/pin.h
===================================================================
--- /titan/titan/pin.h	(revision 16510)
+++ /titan/titan/pin.h	(revision 16511)
@@ -21,5 +21,5 @@
 	changeinput(pincheck, "0000");
 
-	drawscreen(pincheck, 0);
+	drawscreen(pincheck, 0, 0);
 	addscreenrc(pincheck, pincheck);
 
@@ -50,5 +50,5 @@
 	delownerrc(pincheck);
 	clearscreen(pincheck);
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 	return ret;
 }
@@ -92,5 +92,5 @@
 	}
 
-	drawscreen(menuprotect, 0);
+	drawscreen(menuprotect, 0, 0);
 	addscreenrc(menuprotect, listbox);
 
@@ -173,5 +173,5 @@
 	setchoiceboxselection(menuprotect, getconfig("menuprotect", NULL));
 
-	drawscreen(pin, 0);
+	drawscreen(pin, 0, 0);
 	addscreenrc(pin, listbox);
 
@@ -188,5 +188,5 @@
 			clearscreen(pin);
 			screenmenuprotect();
-			drawscreen(pin, 0);
+			drawscreen(pin, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcok", NULL))
Index: /titan/titan/play.h
===================================================================
--- /titan/titan/play.h	(revision 16510)
+++ /titan/titan/play.h	(revision 16511)
@@ -15,5 +15,5 @@
 	changetext(playpolicy, _(tmpstr));
 	free(tmpstr); tmpstr = NULL;
-	drawscreen(playpolicy, 0);
+	drawscreen(playpolicy, 0, 0);
 
 	while(1)
@@ -43,5 +43,5 @@
 		clearscreen(playinfobar);
 		clearscreen(playinfobarpic);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 		return;
 	}
@@ -96,6 +96,6 @@
 	free(tmpstr); tmpstr = NULL;
 
-	drawscreen(playinfobar, 0);
-	drawscreen(playinfobarpic, 0);
+	drawscreen(playinfobar, 0, 0);
+	drawscreen(playinfobarpic, 0, 0);
 }
 
@@ -176,5 +176,5 @@
 
 	screenplayinfobar(NULL, 1, playertype, flag);
-	drawscreen(track, 0);
+	drawscreen(track, 0, 0);
 	addscreenrc(track, listbox);
 
@@ -235,5 +235,5 @@
 	else
 		screenvideomode(1);
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 	if(playinfobarstatus > 0)
 		screenplayinfobar(file, 0, playertype, flag);
@@ -246,5 +246,5 @@
 	screenplayinfobar(file, 1, playertype, flag);
 	screenpowerofftimer();
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 	if(playinfobarstatus > 0)
 		screenplayinfobar(file, 0, playertype, flag);
@@ -259,5 +259,5 @@
 
 	screenplaypolicy(file, 1);
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 	if(playinfobarstatus > 0)
 		screenplayinfobar(file, 0, playertype, flag);
@@ -270,5 +270,5 @@
 	screenplayinfobar(file, 1, playertype, flag);
 	screenvideosettings();
-	drawscreen(skin, 0);
+	drawscreen(skin, 0, 0);
 	if(playinfobarstatus > 0)
 		screenplayinfobar(file, 0, playertype, flag);
@@ -713,5 +713,5 @@
 		}
 
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 		playwritevfd(file);
 		if(playertype == 1)
Index: /titan/titan/playlist.h
===================================================================
--- /titan/titan/playlist.h	(revision 16510)
+++ /titan/titan/playlist.h	(revision 16511)
@@ -425,5 +425,5 @@
 	}
 
-	drawscreen(playlist, 0);
+	drawscreen(playlist, 0, 0);
 	if(movesel == NULL) addscreenrc(playlist, listbox);
 
@@ -460,5 +460,5 @@
 					movesel = NULL;
 				}
-				drawscreen(playlist, 0);
+				drawscreen(playlist, 0, 0);
 			}
 		}
Index: /titan/titan/plugin.h
===================================================================
--- /titan/titan/plugin.h	(revision 16510)
+++ /titan/titan/plugin.h	(revision 16511)
@@ -246,5 +246,5 @@
 	struct skin* listbox = getscreennode(plugin, "listbox");
 
-	drawscreen(plugin, 0);
+	drawscreen(plugin, 0, 0);
 	addscreenrc(plugin, listbox);
 
@@ -263,5 +263,5 @@
 					clearscreen(plugin);
 					startplugin();
-					drawscreen(plugin, 0);
+					drawscreen(plugin, 0, 0);
 				}
 			}
@@ -273,5 +273,5 @@
 			{
 				delplugin(listbox->select->name);
-				drawscreen(plugin, 0);
+				drawscreen(plugin, 0, 0);
 			}
 			continue;
@@ -280,5 +280,5 @@
 		{
 			loadplugin();
-			drawscreen(plugin, 0);
+			drawscreen(plugin, 0, 0);
 			continue;
 		}
Index: /titan/titan/possetup.h
===================================================================
--- /titan/titan/possetup.h	(revision 16510)
+++ /titan/titan/possetup.h	(revision 16511)
@@ -22,5 +22,5 @@
 
 		usleep(300000);
-		drawscreen(possetup, 0);
+		drawscreen(possetup, 0, 0);
 		snr = fereadsnr(status.aktservice->fedev);
 		snr = (snr * 100) / 0xffff;
@@ -106,5 +106,5 @@
 	poschangebutton(0, b1, b2, b3, b4);
 
-	drawscreen(possetup, 0);
+	drawscreen(possetup, 0, 0);
 	addscreenrc(possetup, listbox);
 
@@ -116,5 +116,5 @@
 		if(rcret == RCTIMEOUT)
 		{
-			drawscreen(possetup, 0);
+			drawscreen(possetup, 0, 0);
 			continue;
 		}
@@ -196,5 +196,5 @@
 		}
 
-		drawscreen(possetup, 0);
+		drawscreen(possetup, 0, 0);
 	}
 
Index: /titan/titan/powerofftimer.h
===================================================================
--- /titan/titan/powerofftimer.h	(revision 16510)
+++ /titan/titan/powerofftimer.h	(revision 16511)
@@ -125,5 +125,5 @@
 	listbox->aktpage = 1;
 
-	drawscreen(screen, 0);
+	drawscreen(screen, 0, 0);
 	addscreenrc(screen, listbox);
 
@@ -173,5 +173,5 @@
 				changeinput(minutes, tmpstr);
 				free(tmpstr);
-				drawscreen(screen, 0);
+				drawscreen(screen, 0, 0);
 			}
 		}
Index: /titan/titan/rc.h
===================================================================
--- /titan/titan/rc.h	(revision 16510)
+++ /titan/titan/rc.h	(revision 16511)
@@ -219,5 +219,5 @@
 }
 
-int waitrc(struct skin* owner, unsigned int timeout, int flag)
+int waitrc(struct skin* owner, unsigned int timeout, int screencalc)
 {
 	debug(1000, "in");
@@ -296,7 +296,7 @@
 			{
 				if(fromthread == 0)
- 					node->rcfunc(node->screen, node->screennode, 0);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 0);
 				else
- 					node->rcfunc(node->screen, node->screennode, 2);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 2);
 			}
 			
@@ -321,7 +321,7 @@
 			{
 				if(fromthread == 0)
- 					node->rcfunc(node->screen, node->screennode, 0);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 0);
 				else
- 					node->rcfunc(node->screen, node->screennode, 2);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 2);
 			}
 			if(longpress > 0)
@@ -339,7 +339,7 @@
 			{
 				if(fromthread == 0)
- 					node->rcfunc(node->screen, node->screennode, 0);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 0);
 				else
- 					node->rcfunc(node->screen, node->screennode, 2);
+ 					node->rcfunc(node->screen, node->screennode, screencalc, 2);
 			}
 			ret = status.rckey;
Index: /titan/titan/rcfunc.h
===================================================================
--- /titan/titan/rcfunc.h	(revision 16510)
+++ /titan/titan/rcfunc.h	(revision 16511)
@@ -2,5 +2,5 @@
 #define RCFUNC_H
 
-void progressbarright(struct skin* screen, struct skin* progressbar, int flag)
+void progressbarright(struct skin* screen, struct skin* progressbar, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -11,5 +11,5 @@
 		{
 			progressbar->progresssize++;
-			drawscreen(screen, flag);
+			drawscreen(screen, screencalc, flag);
 		}
 		else
@@ -20,5 +20,5 @@
 }
 
-void progressbarleft(struct skin* screen, struct skin* progressbar, int flag)
+void progressbarleft(struct skin* screen, struct skin* progressbar, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -29,5 +29,5 @@
 		{
 			progressbar->progresssize--;
-			drawscreen(screen, flag);
+			drawscreen(screen, screencalc, flag);
 		}
 		else
@@ -38,5 +38,5 @@
 }
 
-void filelistok(struct skin* screen, struct skin* filelist, int flag)
+void filelistok(struct skin* screen, struct skin* filelist, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -82,5 +82,5 @@
 				setlistboxselection(filelist, plastdir);
 				free(lastdir); lastdir = NULL;
-				drawscreen(screen, flag);
+				drawscreen(screen, screencalc, flag);
 			}
 			else
@@ -91,10 +91,10 @@
 }
 
-void helpbox(struct skin* screen, struct skin* node, int flag)
+void helpbox(struct skin* screen, struct skin* node, int screencalc, int flag)
 {
 	if(node != NULL && flag == 0)
 	{
 		screenhelp(screen);
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 	}
 }
@@ -109,9 +109,9 @@
 		changeinput(inputbox, tmpstr);
 		free(tmpstr); tmpstr = NULL;
-		drawscreen(screen, flag);
-	}
-}
-
-void inputboxchar(struct skin* screen, struct skin* inputbox, char zeichen, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+}
+
+void inputboxchar(struct skin* screen, struct skin* inputbox, char zeichen, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -122,11 +122,11 @@
 			inputbox->input[inputbox->aktpage - 1] = zeichen;
 			if(flag != 1)
-				drawscreen(screen, flag);
-		}
-	}
-	debug(1000, "out");
-}
-
-void inputboxff(struct skin* screen, struct skin* inputbox, int flag)
+				drawscreen(screen, screencalc, flag);
+		}
+	}
+	debug(1000, "out");
+}
+
+void inputboxff(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -136,10 +136,10 @@
 			changeinput(inputbox, "");
 		inputbox->aktpage = insertchar(&inputbox->input, '_', inputbox->aktpage);
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void inputboxfr(struct skin* screen, struct skin* inputbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void inputboxfr(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -147,5 +147,5 @@
 	{
 		inputbox->aktpage = delchar(&inputbox->input, inputbox->aktpage);
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 	}
 	debug(1000, "out");
@@ -202,5 +202,5 @@
 }
 
-void inputboxright(struct skin* screen, struct skin* inputbox, int flag)
+void inputboxright(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -212,10 +212,10 @@
 
 		checkinputboxnumright(inputbox);
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void inputboxleft(struct skin* screen, struct skin* inputbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void inputboxleft(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -227,10 +227,10 @@
 
 		checkinputboxnumleft(inputbox);
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void inputbox0(struct skin* screen, struct skin* inputbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void inputbox0(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -259,5 +259,5 @@
 }
 
-void inputbox1(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox1(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -300,5 +300,5 @@
 }
 
-void inputbox2(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox2(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -331,5 +331,5 @@
 }
 
-void inputbox3(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox3(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -362,5 +362,5 @@
 }
 
-void inputbox4(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox4(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -393,5 +393,5 @@
 }
 
-void inputbox5(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox5(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -425,5 +425,5 @@
 }
 
-void inputbox6(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox6(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -456,5 +456,5 @@
 }
 
-void inputbox7(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox7(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -491,5 +491,5 @@
 }
 
-void inputbox8(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox8(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -522,5 +522,5 @@
 }
 
-void inputbox9(struct skin* screen, struct skin* inputbox, int flag)
+void inputbox9(struct skin* screen, struct skin* inputbox, int screencalc, int flag)
 {
 	if(inputbox != NULL && inputbox->input != NULL)
@@ -557,5 +557,5 @@
 }
 
-void choiceboxleft(struct skin* screen, struct skin* choicebox, int flag)
+void choiceboxleft(struct skin* screen, struct skin* choicebox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -566,10 +566,10 @@
 		else
 			choicebox->aktpage--;
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void choiceboxright(struct skin* screen, struct skin* choicebox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void choiceboxright(struct skin* screen, struct skin* choicebox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -583,10 +583,10 @@
 			choicebox->aktpage++;
 		}
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void griddown(struct skin* screen, struct skin* grid, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void griddown(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -644,11 +644,11 @@
 
 		if(grid->select != NULL) delscreenrc(screen, grid->select);
-		drawscreen(screen, flag);
-	}
-
-	debug(1000, "out");
-}
-
-void gridup(struct skin* screen, struct skin* grid, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+
+	debug(1000, "out");
+}
+
+void gridup(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -715,11 +715,11 @@
 
 		if(grid->select != NULL) delscreenrc(screen, grid->select);
-		drawscreen(screen, flag);
-	}
-
-	debug(1000, "out");
-}
-
-void gridleft(struct skin* screen, struct skin* grid, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+
+	debug(1000, "out");
+}
+
+void gridleft(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -752,5 +752,5 @@
 
 		if(grid->select != NULL) delscreenrc(screen, grid->select);
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 		if(grid->select != NULL)
 			grid->gridcol = grid->select->posx + (grid->select->width / 2);
@@ -759,5 +759,5 @@
 }
 
-void gridright(struct skin* screen, struct skin* grid, int flag)
+void gridright(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -792,5 +792,5 @@
 
 		if(grid->select != NULL) delscreenrc(screen, grid->select);
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 		if(grid->select != NULL)
 			grid->gridcol = grid->select->posx + (grid->select->width / 2);
@@ -799,5 +799,5 @@
 }
 
-void gridchup(struct skin* screen, struct skin* grid, int flag)
+void gridchup(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -810,5 +810,5 @@
 			grid->aktpage = 1;
 
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 		if(grid->select != NULL)
 			grid->gridcol = grid->select->posx + (grid->select->width / 2);
@@ -818,5 +818,5 @@
 }
 
-void gridchdown(struct skin* screen, struct skin* grid, int flag)
+void gridchdown(struct skin* screen, struct skin* grid, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -832,5 +832,5 @@
 		}
 
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 		if(grid->select != NULL)
 			grid->gridcol = grid->select->posx + (grid->select->width / 2);
@@ -841,5 +841,5 @@
 
 
-void listboxleft(struct skin* screen, struct skin* listbox, int flag)
+void listboxleft(struct skin* screen, struct skin* listbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -853,5 +853,5 @@
 
 		if(listbox->select != NULL) delscreenrc(screen, listbox->select);
-		drawscreen(screen, flag);
+		drawscreen(screen, screencalc, flag);
 	}
 
@@ -874,11 +874,11 @@
 
 		if(listbox->select != NULL) delscreenrc(screen, listbox->select);
-		drawscreen(screen, flag);
-	}
-
-	debug(1000, "out");
-}
-
-void listboxup(struct skin* screen, struct skin* listbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+
+	debug(1000, "out");
+}
+
+void listboxup(struct skin* screen, struct skin* listbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -892,10 +892,10 @@
 
 		if(listbox->select != NULL) delscreenrc(screen, listbox->select);
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void listboxdown(struct skin* screen, struct skin* listbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void listboxdown(struct skin* screen, struct skin* listbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -910,10 +910,10 @@
 
 		if(listbox->select != NULL) delscreenrc(screen, listbox->select);
-		drawscreen(screen, flag);
-	}
-	debug(1000, "out");
-}
-
-void textboxup(struct skin* screen, struct skin* textbox, int flag)
+		drawscreen(screen, screencalc, flag);
+	}
+	debug(1000, "out");
+}
+
+void textboxup(struct skin* screen, struct skin* textbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -923,11 +923,11 @@
 		{
 			textbox->aktpage--;
-			drawscreen(screen, flag);
-		}
-	}
-	debug(1000, "out");
-}
-
-void textboxdown(struct skin* screen, struct skin* textbox, int flag)
+			drawscreen(screen, screencalc, flag);
+		}
+	}
+	debug(1000, "out");
+}
+
+void textboxdown(struct skin* screen, struct skin* textbox, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -937,5 +937,5 @@
 		{
 			textbox->aktpage++;
-			drawscreen(screen, flag);
+			drawscreen(screen, screencalc, flag);
 		}
 	}
Index: /titan/titan/record.h
===================================================================
--- /titan/titan/record.h	(revision 16510)
+++ /titan/titan/record.h	(revision 16511)
@@ -893,5 +893,5 @@
 		free(tmpnr);
 
-		drawscreen(recordduration, 0);
+		drawscreen(recordduration, 0, 0);
 		addscreenrc(recordduration, recordduration);
 
Index: /titan/titan/recordpath.h
===================================================================
--- /titan/titan/recordpath.h	(revision 16510)
+++ /titan/titan/recordpath.h	(revision 16511)
@@ -20,5 +20,5 @@
 	changeinput(streampath, getconfig("rec_streampath", NULL));
 
-	drawscreen(recordpath, 0);
+	drawscreen(recordpath, 0, 0);
 	addscreenrc(recordpath, listbox);
 
@@ -47,5 +47,5 @@
 				free(ret);
 
-        			drawscreen(recordpath, 0);
+				drawscreen(recordpath, 0, 0);
 			}
 		}
Index: /titan/titan/rectimer.h
===================================================================
--- /titan/titan/rectimer.h	(revision 16510)
+++ /titan/titan/rectimer.h	(revision 16511)
@@ -1021,7 +1021,5 @@
 	{
 		addscreenrc(rectimerext, tmp);
-		status.screencalc = 2;
-		rcret = waitrc(rectimerext, 0, 0);
-		status.screencalc = 0;
+		rcret = waitrc(rectimerext, 0, 2);
 		tmp = listbox->select;
 
@@ -1036,5 +1034,5 @@
 			recrepeatehidden(tmprepeate, repeatetype, day, mon, tue, wed, thur, fri, sat, sun);
 		}
-		drawscreen(rectimerext, 0);
+		drawscreen(rectimerext, 0, 0);
 
 		if(rcret == getrcconfigint("rcexit", NULL))
@@ -1053,5 +1051,5 @@
 				free(tmpstr); tmpstr = NULL;
 
-				drawscreen(rectimerext, 0);
+				drawscreen(rectimerext, 0, 0);
 				continue;
 			}
@@ -1099,5 +1097,5 @@
 				}
 
-				drawscreen(rectimerext, 0);
+				drawscreen(rectimerext, 0, 0);
 				continue;
 			}
@@ -1333,5 +1331,5 @@
 	}
 
-	drawscreen(recordtimer, 0);
+	drawscreen(recordtimer, 0, 0);
 	addscreenrc(recordtimer, listbox);
 
Index: /titan/titan/rotorcalc.h
===================================================================
--- /titan/titan/rotorcalc.h	(revision 16510)
+++ /titan/titan/rotorcalc.h	(revision 16511)
@@ -1,3 +1,2 @@
-//#include <cmath>
 #ifndef ROTORCALC_H
 #define ROTORCALC_H
Index: /titan/titan/satfinder.h
===================================================================
--- /titan/titan/satfinder.h	(revision 16510)
+++ /titan/titan/satfinder.h	(revision 16511)
@@ -7,5 +7,5 @@
 	struct skin* satfinder = getscreen("satfinder");
 
-	drawscreen(satfinder, 0);
+	drawscreen(satfinder, 0, 0);
 
 	while(1)
@@ -14,5 +14,5 @@
 		if(rcret == RCTIMEOUT)
 		{
-			drawscreen(satfinder, 0);
+			drawscreen(satfinder, 0, 0);
 			continue;
 		}
Index: /titan/titan/scan.h
===================================================================
--- /titan/titan/scan.h	(revision 16510)
+++ /titan/titan/scan.h	(revision 16511)
@@ -932,5 +932,5 @@
 			progress->progresssize = (100 / (float)scaninfo.tpmax) * scaninfo.tpcount;
 
-		drawscreen(scan, 0);
+		drawscreen(scan, 0, 0);
 		rcret = waitrc(scan, 1000, 0);
 
@@ -1350,5 +1350,5 @@
 	addchoicebox(blindscan, "1", _("yes"));
 
-	drawscreen(scan, 0);
+	drawscreen(scan, 0, 0);
 	addscreenrc(scan, listbox);
 
@@ -1382,10 +1382,10 @@
 			scanchangesat(sat, tpnode, listbox->select->ret);
 			changescantype(scantype->ret, scan, listbox, tuner, sat, system, frequency, inversion, symbolrate, polarization, fec, modulation, rolloff, pilot);
-			drawscreen(scan, 0);
+			drawscreen(scan, 0, 0);
 		}
 		if(listbox->select != NULL && ostrcmp(listbox->select->name, "scantype") == 0)
 		{
 			changescantype(scantype->ret, scan, listbox, tuner, sat, system, frequency, inversion, symbolrate, polarization, fec, modulation, rolloff, pilot);
-			drawscreen(scan, 0);
+			drawscreen(scan, 0, 0);
 
 		}
@@ -1394,5 +1394,5 @@
 			clearscreen(scan);
 			screenscan(tpnode, scan->child, tuner->ret, iscantype, isat, ifrequency, iinversion, isymbolrate, ipolarization, ifec, imodulation, irolloff, ipilot, inetworkscan, ionlyfree, iclear, iblindscan, isystem, 5000000);
-			drawscreen(scan, 0);
+			drawscreen(scan, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcgreen", NULL) && tpnode != NULL && iscantype == 0)
@@ -1402,5 +1402,5 @@
 			deltransponderbyid(99);
 			textbox(_("Message"), _("Transponder changed"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
-			drawscreen(scan, 0);
+			drawscreen(scan, 0, 0);
 		}
 		else if(rcret == getrcconfigint("rcok", NULL))
Index: /titan/titan/screensaver.h
===================================================================
--- /titan/titan/screensaver.h	(revision 16510)
+++ /titan/titan/screensaver.h	(revision 16511)
@@ -27,5 +27,5 @@
 	int overscanx = 60, overscany = 60;
 	if(screensaver->type == 3)
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	if(screensaver == NULL) return 1;
 
@@ -69,5 +69,5 @@
 			screensaversetfontcol(screensaver->screen->bgcol);
 		}
-		drawscreen(screensaver->screen, 0);
+		drawscreen(screensaver->screen, 0, 0);
 	}
 
Index: /titan/titan/screensaveradjust.h
===================================================================
--- /titan/titan/screensaveradjust.h	(revision 16510)
+++ /titan/titan/screensaveradjust.h	(revision 16511)
@@ -83,5 +83,5 @@
 	setchoiceboxselection(screensaver_type, getconfig("screensaver_type", NULL));
 
-	drawscreen(screensaveradjust, 0);
+	drawscreen(screensaveradjust, 0, 0);
 	addscreenrc(screensaveradjust, listbox);
 
Index: /titan/titan/serviceinfo.h
===================================================================
--- /titan/titan/serviceinfo.h	(revision 16510)
+++ /titan/titan/serviceinfo.h	(revision 16511)
@@ -244,5 +244,5 @@
 	hiddetuner(tuner, type, system, modulation, orbitalpos, frequency, symbolrate, polarization, inversion, fec, rolloff, pilot, YES, 0);
 
-	drawscreen(serviceinfo, 0);
+	drawscreen(serviceinfo, 0, 0);
 
 	while(1)
@@ -258,5 +258,5 @@
 			hiddepids(videopid, audiopid, pcrpid, pmtpid, txtpid, tsid, onid, sid, id, YES);
 			hiddetuner(tuner, type, system, modulation, orbitalpos, frequency, symbolrate, polarization, inversion, fec, rolloff, pilot, YES, 0);
-			drawscreen(serviceinfo, 0);
+			drawscreen(serviceinfo, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcgreen", NULL))
@@ -267,5 +267,5 @@
 			hiddepids(videopid, audiopid, pcrpid, pmtpid, txtpid, tsid, onid, sid, id, NO);
 			hiddetuner(tuner, type, system, modulation, orbitalpos, frequency, symbolrate, polarization, inversion, fec, rolloff, pilot, YES, 0);
-			drawscreen(serviceinfo, 0);
+			drawscreen(serviceinfo, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcyellow", NULL))
@@ -276,5 +276,5 @@
 			hiddepids(videopid, audiopid, pcrpid, pmtpid, txtpid, tsid, onid, sid, id, YES);
 			hiddetuner(tuner, type, system, modulation, orbitalpos, frequency, symbolrate, polarization, inversion, fec, rolloff, pilot, NO, aktsystem);
-			drawscreen(serviceinfo, 0);
+			drawscreen(serviceinfo, 0, 0);
 		}
 	}
Index: /titan/titan/skin.h
===================================================================
--- /titan/titan/skin.h	(revision 16510)
+++ /titan/titan/skin.h	(revision 16511)
@@ -3443,5 +3443,5 @@
 }
 
-int setnodeattr(struct skin* node, struct skin* parent)
+int setnodeattr(struct skin* node, struct skin* parent, int screencalc)
 {
 	if(node != skin) node->flag = clearbit(node->flag, 0);
@@ -3483,5 +3483,5 @@
 	}
 
-	if(status.screencalc != 2)
+	if(screencalc != 2)
 	{
 		if(node->hidden == YES || parent->hidden == YES || node->locked == YES || parent->locked == YES) return 1;
@@ -3528,5 +3528,5 @@
 	if(node->rposx - shadowlx < parent->iposx)
 	{
-		if(status.screencalc == 0) err("node (%s posx=%d) out of parent (%s posx=%d)", node->name, node->rposx - shadowlx, parent->name, parent->iposx);
+		if(screencalc == 0) err("node (%s posx=%d) out of parent (%s posx=%d)", node->name, node->rposx - shadowlx, parent->name, parent->iposx);
 		node->rposx = parent->iposx + shadowlx;
 		//return 1;
@@ -3534,5 +3534,5 @@
 	if(node->rposy - shadowoy < parent->iposy)
 	{
-		if(status.screencalc == 0) err("node (%s posy=%d) out of parent (%s posy=%d)", node->name, node->rposy - shadowoy, parent->name, parent->iposy);
+		if(screencalc == 0) err("node (%s posy=%d) out of parent (%s posy=%d)", node->name, node->rposy - shadowoy, parent->name, parent->iposy);
 		node->rposy = parent->iposy + shadowoy;
 		//return 1;
@@ -3540,5 +3540,5 @@
 	if(node->rposx + node->rwidth + shadowrx > parent->iposx + parent->iwidth)
 	{
-		if(status.screencalc == 0) err("node (%s posxx=%d) out of parent (%s posxx=%d)", node->name, node->rposx + node->rwidth + shadowrx, parent->name, parent->iposx + parent->iwidth);
+		if(screencalc == 0) err("node (%s posxx=%d) out of parent (%s posxx=%d)", node->name, node->rposx + node->rwidth + shadowrx, parent->name, parent->iposx + parent->iwidth);
 		node->rwidth = parent->iwidth - node->rposx - shadowrx;
 		//return 1;
@@ -3546,5 +3546,5 @@
 	if(node->rposy + node->rheight + shadowuy > parent->iposy + parent->iheight)
 	{
-		if(status.screencalc == 0) err("node (%s posyy=%d) out of parent (%s posyy=%d)", node->name, node->rposy + node->rheight + shadowuy, parent->name, parent->iposy + parent->iheight);
+		if(screencalc == 0) err("node (%s posyy=%d) out of parent (%s posyy=%d)", node->name, node->rposy + node->rheight + shadowuy, parent->name, parent->iposy + parent->iheight);
 		node->rheight = parent->iheight - node->rposy - shadowuy;
 		//return 1;
@@ -3649,5 +3649,5 @@
 }
 
-int drawscreenalways(struct skin* node)
+int drawscreenalways(struct skin* node, int screencalc)
 {
 	debug(1000, "in");
@@ -3663,5 +3663,5 @@
 					free(status.drawallwaysbg[i]);
 				status.drawallwaysbg[i] = savescreen(status.drawallways[i]);
-				ret = drawscreen(status.drawallways[i], 1);
+				ret = drawscreen(status.drawallways[i], screencalc, 1);
 			}
 		}
@@ -3672,5 +3672,5 @@
 }
 
-int drawscreennode(struct skin *node, char* nodename)
+int drawscreennode(struct skin *node, char* nodename, int screencalc)
 {
 	debug(1000, "in");
@@ -3681,5 +3681,5 @@
 		drawnode(node, 1);
 
-	drawscreenalways(node);
+	drawscreenalways(node, screencalc);
 	blitfb(0);
 	m_unlock(&status.drawingmutex, 0);
@@ -3689,5 +3689,5 @@
 }
 
-int drawscreennodebyname(char* screenname, char* nodename)
+int drawscreennodebyname(char* screenname, char* nodename, int screencalc)
 {
 	debug(1000, "in");
@@ -3699,5 +3699,5 @@
 		drawnode(node, 1);
 
-	drawscreenalways(node);
+	drawscreenalways(node, screencalc);
 	blitfb(0);
 	m_unlock(&status.drawingmutex, 0);
@@ -3712,5 +3712,8 @@
 //flag 3: same as 0 but don't use status.screencalc
 //flag 4: same as 0 but animate
-int drawscreen(struct skin* node, int flag)
+//screencalc 0: calculate and draw
+//screencalc 1: only calculate without hidden nodes
+//screencalc 2: only calculate hidden nodes
+int drawscreen(struct skin* node, int screencalc, int flag)
 {
 	struct fb* merkskinfb = NULL;
@@ -3731,5 +3734,5 @@
 	parent = skin;
 
-	ret = setnodeattr(node, parent);
+	ret = setnodeattr(node, parent, screencalc);
 	if(ret == 1)
 	{
@@ -3747,5 +3750,5 @@
 	}
 
-	if(status.screencalc == 0 || flag == 3 || flag == 4)
+	if(screencalc == 0 || flag == 3 || flag == 4)
 	{
 		if(flag == 0 || flag == 2 || flag == 3 || flag == 4) clearscreenalways();
@@ -3768,5 +3771,5 @@
 			parent = oldparent;
 
-		if(setnodeattr(child, parent) == 0 && (status.screencalc == 0 || flag == 3))
+		if(setnodeattr(child, parent, screencalc) == 0 && (screencalc == 0 || flag == 3))
 			drawnode(child, 1);
 		child = child->next;
@@ -3775,7 +3778,7 @@
 	if(flag == 0 || flag == 2 || flag == 3 || flag == 4)
 	{
-		if(status.screencalc == 0 || flag == 3)
-		{
-			drawscreenalways(node);
+		if(screencalc == 0 || flag == 3)
+		{
+			drawscreenalways(node, screencalc);
 
 			if(merkskinfb != NULL) 
@@ -3807,5 +3810,5 @@
 }
 
-int drawscreenbyname(char* screenname)
+int drawscreenbyname(char* screenname, int screencalc, int flag)
 {
 	debug(1000, "in");
@@ -3820,5 +3823,5 @@
 	}
 
-	ret = drawscreen(node, 0);
+	ret = drawscreen(node, screencalc, flag);
 	debug(1000, "out");
 	return ret;
Index: /titan/titan/skinadjust.h
===================================================================
--- /titan/titan/skinadjust.h	(revision 16510)
+++ /titan/titan/skinadjust.h	(revision 16511)
@@ -49,5 +49,5 @@
 	obottomoffset = getconfigint("fbbottomoffset", NULL);
 
-	drawscreen(skinadjust, 0);
+	drawscreen(skinadjust, 0, 0);
 	addscreenrc(skinadjust, listbox);
 
@@ -68,5 +68,5 @@
 		status.bottomoffset = getconfigint("fbbottomoffset", NULL);
 		
-		drawscreen(skinadjust, 0);
+		drawscreen(skinadjust, 0, 0);
 
 		if(rcret == getrcconfigint("rcexit", NULL))
@@ -100,5 +100,5 @@
 				free(ret);
 
-				drawscreen(skinadjust, 0);
+				drawscreen(skinadjust, 0, 0);
 				continue;
 			}
Index: /titan/titan/skinselector.h
===================================================================
--- /titan/titan/skinselector.h	(revision 16510)
+++ /titan/titan/skinselector.h	(revision 16511)
@@ -169,5 +169,5 @@
 	listbox->aktpage = -1;
 	
-	drawscreen(screen,0);
+	drawscreen(screen, 0, 0);
 	addscreenrc(screen, listbox);
 
@@ -217,5 +217,5 @@
 				{
 					textbox(_("Message"), _("No skinconfig found in skin.\nCan't chage to selected skin."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
-					drawscreen(screen, 0);
+					drawscreen(screen, 0, 0);
 					free(tmpstr); tmpstr = NULL;
 					continue;
@@ -240,5 +240,5 @@
 			changepic(png, pf);
 			free(pf);
-			drawscreen(screen,0);
+			drawscreen(screen, 0, 0);
 		}
 	}
Index: /titan/titan/softcam.h
===================================================================
--- /titan/titan/softcam.h	(revision 16510)
+++ /titan/titan/softcam.h	(revision 16511)
@@ -254,5 +254,5 @@
 	fillmenubox();
 
-	drawscreen(softcam, 0);
+	drawscreen(softcam, 0, 0);
 	addscreenrc(softcam, listbox);
 
@@ -269,10 +269,10 @@
 			// deactivate emu
 			deactivate(tmp->name);
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcgreen", NULL)){
 			// restart emu
 			restartcam(tmp->name);
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcyellow", NULL)){
@@ -281,10 +281,10 @@
 			readmenu();
 			fillmenubox();
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcblue", NULL)){
 			// activate emu
 			activate(tmp->name);
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
 		if(rcret == getrcconfigint("rcok", NULL)){
@@ -296,10 +296,10 @@
 				startcam(tmp->name);
 			}
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
 		if(rcret == RCTIMEOUT){
 			// update ecminfo
 			readecminfo(labelecminfo);
-			drawscreen(softcam, 0);
+			drawscreen(softcam, 0, 0);
 		}
         }
Index: /titan/titan/spinner.h
===================================================================
--- /titan/titan/spinner.h	(revision 16510)
+++ /titan/titan/spinner.h	(revision 16511)
@@ -32,5 +32,5 @@
 	struct skin* spinner = getscreen("spinner");
 	struct skin* node = NULL;
-	int count = 0, treffer = 0, tmpscreencalc = 0;
+	int count = 0, treffer = 0;
 	char* bg = NULL;
 
@@ -69,10 +69,8 @@
 	//save bg
 	m_lock(&status.drawingmutex, 0);
-	tmpscreencalc = status.screencalc;
-	status.screencalc = 0;
-	setnodeattr(spinner, framebuffer);
+	setnodeattr(spinner, framebuffer, 0);
 	bg = savescreen(spinner);
 
-	drawscreen(spinner, 2);
+	drawscreen(spinner, 0, 2);
 	usleep(status.spinnerspeed * 10000);
 	clearscreennolock(spinner);
@@ -81,5 +79,4 @@
 	restorescreen(bg, spinner);
 	blitfb(0);
-	status.screencalc = tmpscreencalc;
 	m_unlock(&status.drawingmutex, 0);
 	usleep(1000);
Index: /titan/titan/struct.h
===================================================================
--- /titan/titan/struct.h	(revision 16510)
+++ /titan/titan/struct.h	(revision 16511)
@@ -1108,8 +1108,4 @@
 	int rckey;
 	struct skin* skinerr;
-	// 0 calc and draw
-	// 1 calc only without hidden nodes
-	// 2 calc only with hidden nodes
-	int screencalc;
 	// 0 deaktiv
 	// 1 struct filelist filled
@@ -1238,5 +1234,5 @@
 {
 	int key;
-	void (*rcfunc)(struct skin*, struct skin*, int flag);
+	void (*rcfunc)(struct skin*, struct skin*, int screencalc, int flag);
 	struct skin *screen;
 	struct skin *screennode;
Index: /titan/titan/subtitle.h
===================================================================
--- /titan/titan/subtitle.h	(revision 16510)
+++ /titan/titan/subtitle.h	(revision 16511)
@@ -1627,5 +1627,5 @@
 	if(treffer == 0) listbox->aktline = 1;
 
-	drawscreen(subtitle, 0);
+	drawscreen(subtitle, 0, 0);
 	addscreenrc(subtitle, listbox);
 
@@ -1646,5 +1646,5 @@
 					{
 						clearscreen(subtitle);
-						drawscreen(skin, 0);
+						drawscreen(skin, 0, 0);
 						if(subtitlestart((struct subtitle*)listbox->select->handle) == 0)
 							status.subthreadpid = ((struct subtitle*)listbox->select->handle)->pid;
Index: /titan/titan/system_backup.h
===================================================================
--- /titan/titan/system_backup.h	(revision 16510)
+++ /titan/titan/system_backup.h	(revision 16511)
@@ -30,5 +30,5 @@
 		changeinput(listfield, "kernel\nvar\nroot\nfull");
 
-	drawscreen(backup, 0);
+	drawscreen(backup, 0, 0);
 	tmp = listbox->select;
 
@@ -47,5 +47,5 @@
 			{
 				b_red->hidden = YES; b_green->hidden = YES;
-				drawscreen(backup, 0);
+				drawscreen(backup, 0, 0);
 				if(listbox->select != NULL && listbox->select->ret != NULL)
 				{
Index: /titan/titan/system_backup_restore.h
===================================================================
--- /titan/titan/system_backup_restore.h	(revision 16510)
+++ /titan/titan/system_backup_restore.h	(revision 16511)
@@ -17,5 +17,5 @@
 	changetitle(backup_restore, _("Backup / Restore Settings"));
 
-	drawscreen(backup_restore, 0);
+	drawscreen(backup_restore, 0, 0);
 
 	while(1)
@@ -32,5 +32,5 @@
 			{
 				changetext(info, _("Please wait ...\n\nAll Settings are saved.\n\nBox will start in few seconds."));
-				drawscreen(backup_restore, 0);
+				drawscreen(backup_restore, 0, 0);
 			
 				if(isfile("/var/backup/.actbackup"))
@@ -50,9 +50,9 @@
 					textbox(_("RESTORE ERROR"), _("No backup folders found!!!\n\nAborting restoring..."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
 					changetext(info, _(infotext));
-					drawscreen(backup_restore, 0);
+					drawscreen(backup_restore, 0, 0);
 				}
 			}else
 			{
-				drawscreen(backup_restore, 0);
+				drawscreen(backup_restore, 0, 0);
 			}
 		}
@@ -65,5 +65,5 @@
 				info->textposx = 50;
 				b_red->hidden = YES; b_green->hidden = YES; b_yellow->hidden = YES;
-				drawscreen(backup_restore, 0);
+				drawscreen(backup_restore, 0, 0);
 
 				writeallconfig(1);
@@ -77,5 +77,5 @@
 				b_red->hidden = NO; b_green->hidden = NO; b_yellow->hidden = NO;
 				textbox(_("Message"), _("Backup created successfully"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 7, 0);
-				drawscreen(backup_restore, 0);
+				drawscreen(backup_restore, 0, 0);
 			}
 			else
@@ -83,5 +83,5 @@
 				clearscreen(backup_restore);
 				textbox(_("BACKUP ERROR"), _("A record hdd or a swapstick must be mounted!\n\nAborting backup..."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
-				drawscreen(backup_restore, 0);
+				drawscreen(backup_restore, 0, 0);
 			}
 		}
Index: /titan/titan/system_update.h
===================================================================
--- /titan/titan/system_update.h	(revision 16510)
+++ /titan/titan/system_update.h	(revision 16511)
@@ -9,5 +9,5 @@
 	status.hangtime = 99999;
 	struct skin* systemupdate = getscreen("loading");
-	drawscreen(systemupdate, 0);
+	drawscreen(systemupdate, 0, 0);
 
 	char* tmpstr = NULL;
@@ -165,5 +165,5 @@
 			}
 
-			drawscreen(systemupdate, 0);
+			drawscreen(systemupdate, 0, 0);
 			getfilelist(systemupdate, filelistpath, filelist, filepath, filemask, 1, NULL);
 			addscreenrc(systemupdate, filelist);
@@ -313,5 +313,5 @@
 				{
 					textbox(_("Message"), _("Error file not supported"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
-					drawscreen(systemupdate, 0);
+					drawscreen(systemupdate, 0, 0);
 					getfilelist(systemupdate, filelistpath, filelist, filepath, filemask, 1, NULL);
 					addscreenrc(systemupdate, filelist);
@@ -327,5 +327,5 @@
 				{
 					debug(40, "update canceled cmd: %s", cmd);
-					drawscreen(systemupdate, 0);
+					drawscreen(systemupdate, 0, 0);
 					getfilelist(systemupdate, filelistpath, filelist, filepath, filemask, 1, NULL);
 					addscreenrc(systemupdate, filelist);
Index: /titan/titan/textbox.h
===================================================================
--- /titan/titan/textbox.h	(revision 16510)
+++ /titan/titan/textbox.h	(revision 16511)
@@ -8,5 +8,5 @@
 {
 	debug(1000, "in");
-	int rcret = -1, tmpscreencalc = 0, fromthread = 0;
+	int rcret = -1, fromthread = 0;
 	struct skin* messagebox = getscreen("messagebox");
 	struct skin* textbox = getscreennode(messagebox, "textbox");
@@ -96,16 +96,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(messagebox, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(messagebox, framebuffer, 2);
 		status.rcowner = messagebox;
 		bg = savescreen(messagebox);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(messagebox, 2);
+		drawscreen(messagebox, 0, 2);
 	}
 	else
-		drawscreen(messagebox, 0);
+		drawscreen(messagebox, 0, 0);
 
 	if(fromthread != 1)
@@ -123,5 +118,4 @@
 		restorescreen(bg, messagebox);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
@@ -132,5 +126,5 @@
 	{
 		clearscreen(messagebox);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	}
 
Index: /titan/titan/textinput.h
===================================================================
--- /titan/titan/textinput.h	(revision 16510)
+++ /titan/titan/textinput.h	(revision 16511)
@@ -5,5 +5,5 @@
 {
 	debug(1000, "in");
-	int rcret = -1, tmpscreencalc = 0, fromthread = 0, height = 0;
+	int rcret = -1, fromthread = 0, height = 0;
 	struct skin* textinput = getscreen("textinput");
 	struct skin* input = getscreennode(textinput, "input");
@@ -12,5 +12,5 @@
 
 	if(pthread_self() != status.mainthread)
-                fromthread = 1;
+	fromthread = 1;
 
 	changetitle(textinput, title);
@@ -24,16 +24,11 @@
 		m_lock(&status.drawingmutex, 0);
 		m_lock(&status.rcmutex, 10);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 2;
-		setnodeattr(textinput, framebuffer);
-		status.screencalc = tmpscreencalc;
+		setnodeattr(textinput, framebuffer, 2);
 		status.rcowner = textinput;
 		bg = savescreen(textinput);
-		tmpscreencalc = status.screencalc;
-		status.screencalc = 0;
-		drawscreen(textinput, 2);
+		drawscreen(textinput, 0, 2);
 	}
 	else
-		drawscreen(textinput, 0);
+		drawscreen(textinput, 0, 0);
 	addscreenrc(textinput, input);
 
@@ -56,5 +51,4 @@
 		restorescreen(bg, textinput);
 		blitfb(0);
-		status.screencalc = tmpscreencalc;
 		sleep(1);
 		status.rcowner = NULL;
@@ -65,5 +59,5 @@
 	{
 		clearscreen(textinput);
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 	}
 
Index: /titan/titan/timeshift.h
===================================================================
--- /titan/titan/timeshift.h	(revision 16510)
+++ /titan/titan/timeshift.h	(revision 16511)
@@ -188,5 +188,5 @@
 		}
 		
-		drawscreen(timeshift, 0);
+		drawscreen(timeshift, 0, 0);
 		sleep (1);
 		if(status.timeshiftseek == 999999) {
Index: /titan/titan/timezone.h
===================================================================
--- /titan/titan/timezone.h	(revision 16510)
+++ /titan/titan/timezone.h	(revision 16511)
@@ -80,5 +80,5 @@
 
 	setlistboxselection(listbox, getconfig("timezonename", NULL));
-	drawscreen(timezone, 0);
+	drawscreen(timezone, 0, 0);
 	addscreenrc(timezone, listbox);
 
Index: /titan/titan/titan.c
===================================================================
--- /titan/titan/titan.c	(revision 16510)
+++ /titan/titan/titan.c	(revision 16511)
@@ -271,5 +271,5 @@
 		changepic(logo, tmpstr);
 		tmpstr = NULL;
-		drawscreen(logo, 0);
+		drawscreen(logo, 0, 0);
 	}
 	else
@@ -717,5 +717,5 @@
 		writevfd("");
 		status.updatevfd = START;
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 		addconfig("nofirstwizzard", "1");
 	}
@@ -723,5 +723,5 @@
 	{
 		// workaround, remove bootlogo on startup
-		drawscreen(skin, 0);
+		drawscreen(skin, 0, 0);
 
 		//check servicestart
@@ -855,5 +855,5 @@
 	tmpstr = ostrcat(tmpstr, _("Automatic stop in 5 seconds."), 1, 0);
 	changetext(starterror, _(tmpstr));
-	drawscreen(starterror, 0);
+	drawscreen(starterror, 0, 0);
 	sleep(5);
 	free(tmpstr);
