[Spark] Schönheitsfehler

Fremd-Buildsysteme
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

[Spark] Schönheitsfehler

Beitrag von AudioSlyer »

1. Schriftgrössenfaktor nur 100<==>200 möglich über Scart. In der Hilfe steht min50 max200.
2. Lüftersteuerung könnte bei Spark ausgeblendet werden.
3. Anfangsverzögerung bei mir optimal mit 400 und Wiederholung aus 100

Sonst alles super
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: [Spark] Schönheitsfehler

Beitrag von mohousch »

@seife:
warum malst Du nicht erst in einer bestimmte Groesse (OSD Groesse) und denn das alles komplett blitten lassen (copy_area)?
die Spark Box ist keine Low Mem Box man kann definitiv auf dem bpamem device und was darauf von Buffer kommt verzichten:
- malen
- font rendern
- icon oder bild oder auch wie immer was da alles drauf gemalt werden soll.
danach das ganze blitten, damit hat man in allen Video Moden (ob Pal oder 1080i)die gleiche optische OSD.
es ist mehr Arbeit wie das jetzt bei Dir implementiert ist gerade das Neutrino nicht allen Menues mit einem standard Widget baut.
und ja der stmfb kann das sehr gut.
und nein kann keinen Patch liefern ;-)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

Hast du das mal wirklich probiert?

gibt es einen Modus, wo der stmfb "live" skaliert?

Alles andere ist zu langsam: man müsste lauter sequence points einbauen, wo dann geblittet wird, wenn das Bild komplett aufgebaut ist. Dummerweise ist das im Code aber nirgends so vorgesehen. Und das komplette Bild blitten ist nicht wirklich schnell, also das will man nicht 25x pro sekunde oder so machen.

Wenn du das schon irgendwo am laufen hast und code dazu hast, dann immer her damit, es muss kein neutrino patch sein.

Und so wie ich das verstanden habe, braucht man für bestimmte funktionen halt doch den bpamem, weil der Speicher zusammenhängend sein muss, damit der Blitter damit arbeiten kann. Ausserdem hängt das an einem eigenen Speicherbus und dürfte somit schneller sein. Aber nur wenn ich die Doku richtig gelesen habe ;)
hellmaster1024
Neugieriger
Neugieriger
Beiträge: 17
Registriert: Mittwoch 27. November 2002, 21:36

Re: [Spark] Schönheitsfehler

Beitrag von hellmaster1024 »

es gibt keinen live modus soweit ich das weiß!

in e2 wird nicht zyklisch der framebuffer kopiert sondern nachdem ein fenster oder element gerendert wurde.
ich glaube nicht das es einen großen perfomance unterschied macht ob jede linie einzeln skaliert wird und live auf dem tv gezaubert wird oder eben nachdem die gui gezeichnet wurde der framebuffer kopiert wird.

zyklisch 25 mal pro sekunde abfragen wäre nur nötig wenn die gui animationen darstellt ...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

Das Problem ist, dass es bei neutrino genügend stellen gibt, wo direkt in den FB gemalt wird, und deas rendern ist nie wirklich "fertig". Ich habe das zuerst probiert, weil mir der scaling-fb code auch nicht gefallen hat, aber das war insgesamt zu langsam.

Randbedingung: ich will das nur in der CFrameBuffer-Klasse implementieren und nicht spark-spezifischen Code über's ganze neutrino verteilen. Derselbe Code muss auf PC, Tripledragon und spark funktionieren.

Insofern ist der momentane Code nicht schön, aber er funktioniert unter den gegebenen Randbedingungen.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: [Spark] Schönheitsfehler

Beitrag von mohousch »

in e2 wird nicht zyklisch der framebuffer kopiert sondern nachdem ein fenster oder element gerendert wurde.
genauso wie Hellmaster1024 geschrieben hat.
ich glaube nicht das es einen großen perfomance unterschied macht ob jede linie einzeln skaliert wird und live auf dem tv gezaubert wird oder eben nachdem die gui gezeichnet wurde der framebuffer kopiert wird.
doch doch, hab einen Kanal liste vom 4000 Kanälen (oder auch mehr) mit icons für scrambled Kanals un jpeg Sender logosdie blitz schnell aufgezeichnet wird nach dem OK Taste drücken wenn ich mit dem alten neutrino frambuffer Code im sh4-git vergleiche (wo jede Linie und Buchstabe und Icon einzeln scaliert werden), also erst das komplette Fenster (pixel + font + icon + bild) denn blitten.

der bpamem bringt einen Vorteil für die jpeg Bilder damit wird der HW accel benutzt, aber neutrino picviewer macht das sehr gut ;-)

hier das ganz etwa:

Code: Alles auswählen

#ifdef FB_BLIT
#ifdef __sh__
void CFrameBuffer::blit(int x, int y, int dx, int dy)
{ 
	int srcXa = x;
	int srcYa = y;

	int srcXb = x + dx > DEFAULT_XRES ? DEFAULT_XRES : x + dx;
	int srcYb = y + dy > DEFAULT_YRES ? DEFAULT_YRES : y + dy;

	STMFBIO_BLT_DATA  bltData; 
	memset(&bltData, 0, sizeof(STMFBIO_BLT_DATA)); 

	bltData.operation  = BLT_OP_COPY;

	// src
	bltData.srcOffset  = 1920 *1080 * 4;
	bltData.srcPitch   = xRes * 4 /*stride*/;

	bltData.src_left   = srcXa; 
	bltData.src_top    = srcYa; 
	bltData.src_right  = srcXb; 
	bltData.src_bottom = srcYb;
		
	bltData.srcFormat = SURF_BGRA8888;
	bltData.srcMemBase = STMFBGP_FRAMEBUFFER;
	
	/* calculate dst/blit factor */
	// get variable screeninfo
	if (ioctl(fd, FBIOGET_VSCREENINFO, &screeninfo) == -1)
	{
		perror("frameBuffer <FBIOGET_VSCREENINFO>");
	}
		
	xFactor = (double)screeninfo.xres/(double)xRes;
	yFactor = (double)screeninfo.yres/(double)yRes;

	int desXa = srcXa * xFactor;
	int desYa = srcYa * yFactor;
	int desXb = srcXb * xFactor;
	int desYb = srcYb * yFactor;

	/* dst */
	bltData.dstOffset  = 0; 
	bltData.dstPitch   = screeninfo.xres * 4;

	bltData.dst_left   = desXa; 
	bltData.dst_top    = desYa; 
	bltData.dst_right  = desXb; 
	bltData.dst_bottom = desYb;

	bltData.dstFormat = SURF_BGRA8888;		
	bltData.dstMemBase = STMFBGP_FRAMEBUFFER;

	if ( (bltData.dst_right > screeninfo.xres) || (bltData.dst_bottom > screeninfo.yres) )
	{
		printf("CFrameBuffer::blit: values out of range desXb:%d desYb:%d\n", bltData.dst_right, bltData.dst_bottom);
	}

	if (ioctl(fd, STMFBIO_BLT, &bltData ) < 0) 
		perror("STMFBIO_BLIT");
	
	if(ioctl(fd, STMFBIO_SYNC_BLITTER) < 0)
		perror("ioctl STMFBIO_SYNC_BLITTER");	
}
#endif
#endif

an wenden z.B im CWidget() menues

neutrino ist nett und ruft seine menues immer auf die gleiche weise:


- einmal hide:

Code: Alles auswählen

void CMenuWidget::hide()
{
	frameBuffer->paintBackgroundBoxRel(x, y, width + SCROLLBAR_WIDTH, height + ((RADIUS_MID * 3) + 1) ); //15=sb_width, ((RADIUS_MID * 3) + 1)= foot 
	
#ifdef FB_BLIT
	frameBuffer->blit(x - 10, y - 10, width + SCROLLBAR_WIDTH + 10, height + ((RADIUS_MID * 3) + 1) + 10 );
#endif
}
- und zum zweiten mal beim exec
einmal nachdem und noch in der schleife um den cursor und der vorhiger postion zu zeigen

Code: Alles auswählen

int CMenuWidget::exec(CMenuTarget * parent, const std::string &)
{
	neutrino_msg_t      msg;
	neutrino_msg_data_t data;

	int pos = 0;
	exit_pressed = false;

	if (parent)
		parent->hide();


	bool fadeIn = false /*g_settings.widget_fade*/;
	bool fadeOut = false;
	int fadeValue;
	uint32_t fadeTimer = 0;

        if ( fadeIn ) 
	{
		fadeValue = 0x10;
		
		frameBuffer->setBlendLevel(fadeValue);
        }
        else
		fadeValue = g_settings.gtx_alpha;

	paint();
	
#ifdef FB_BLIT	
	frameBuffer->blit(x, y, width + SCROLLBAR_WIDTH, height + ((RADIUS_MID * 3) + 1) );
#endif	

	int retval = menu_return::RETURN_REPAINT;
	unsigned long long timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);

	if ( fadeIn )
		fadeTimer = g_RCInput->addTimer( FADE_TIME, false );
	
	//control loop
	do {
		g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd);

		if ( msg <= CRCInput::RC_MaxRC ) 
		{
			timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
		}
		
		int handled= false;

		for (unsigned int i= 0; i< items.size(); i++) 
		{
			CMenuItem * titem = items[i];
			
			if ((titem->directKey != CRCInput::RC_nokey) && (titem->directKey == msg)) 
			{
				if (titem->isSelectable()) 
				{
					items[selected]->paint( false, (i == items.size()-1) );
					selected= i;
					msg= CRCInput::RC_ok;
				} 
				else 
				{
					// swallow-key...
					handled = true;
				}
				break;
			}
		}

		if (!handled) 
		{
			switch (msg) 
			{
				case (NeutrinoMessages::EVT_TIMER):
					if(data == fadeTimer) 
					{
						if (fadeOut) 
						{ 
							// disappear
							fadeValue -= 0x10;
							if (fadeValue <= 0x10) 
							{
								fadeValue = g_settings.gtx_alpha;
								g_RCInput->killTimer (fadeTimer);
								msg = CRCInput::RC_timeout;
							} 
							else
								frameBuffer->setBlendLevel(fadeValue);
						} 
						else 
						{ 
							// appears
							fadeValue += 0x10;

							if (fadeValue >= g_settings.gtx_alpha)
							{
								fadeValue = g_settings.gtx_alpha;
								g_RCInput->killTimer(fadeTimer);
								fadeIn = false;
								frameBuffer->setBlendLevel(g_settings.gtx_alpha);
							} 
							else
								frameBuffer->setBlendLevel(fadeValue);
						}
					} 
					else 
					{
						if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) 
						{
							retval = menu_return::RETURN_EXIT_ALL;
							msg = CRCInput::RC_timeout;
						}
					}
					break;
					
				case (CRCInput::RC_page_up) :
				case (CRCInput::RC_page_down) :
					if(msg == CRCInput::RC_page_up) 
					{
						if(current_page) 
						{
							pos = (int) page_start[current_page] - 1;
							for (unsigned int count=pos ; count > 0; count--) 
							{
								CMenuItem* item = items[pos];
								if ( item->isSelectable() ) 
								{
									if ((pos < (int)page_start[current_page + 1]) && (pos >= (int)page_start[current_page])) 
									{
										items[selected]->paint( false, (pos == (int) items.size()-1) );
										item->paint( true, (count == items.size()-1) );
										selected = pos;
									} 
									else 
									{
										selected=pos;
										paintItems();
									}
									break;
								}
								pos--;
							}
						} 
						else 
						{
							pos = 0;
							for (unsigned int count=0; count < items.size(); count++) 
							{
								CMenuItem* item = items[pos];
								if ( item->isSelectable() ) 
								{
									if ((pos < (int)page_start[current_page + 1]) && (pos >= (int)page_start[current_page])) 
									{
										items[selected]->paint( false, (count == items.size()-1) );
										item->paint( true, (count == items.size()-1) );
										selected = pos;
									} 
									else 
									{
										selected=pos;
										paintItems();
									}
									break;
								}
								pos++;
							}
						}
					}
					else if(msg==CRCInput::RC_page_down) 
					{
						pos = (int) page_start[current_page + 1];// - 1;
						if(pos >= (int) items.size()) 
							pos = items.size()-1;
						for (unsigned int count=pos ; count < items.size(); count++) 
						{
							CMenuItem* item = items[pos];
							if ( item->isSelectable() ) 
							{
								if ((pos < (int)page_start[current_page + 1]) && (pos >= (int)page_start[current_page])) 
								{
									items[selected]->paint( false );
									item->paint( true );
									selected = pos;
								} 
								else 
								{
									selected=pos;
									paintItems();
								}
								break;
							}
							pos++;
						}
					}
					break;
					
				case (CRCInput::RC_up) :
				case (CRCInput::RC_down) :
				case (CRCInput::RC_vfdup):
				case (CRCInput::RC_vfddown):
					{
						//search next / prev selectable item
						for (unsigned int count=1; count< items.size(); count++) 
						{
							if (msg == CRCInput::RC_up || msg == CRCInput::RC_vfdup) 
							{
								pos = selected - count;
								if ( pos < 0 )
									pos += items.size();
							}
							else if(msg == CRCInput::RC_down || msg == CRCInput::RC_vfddown) 
							{
								pos = (selected+ count)%items.size();
							}

							CMenuItem* item = items[pos];

							if ( item->isSelectable() ) 
							{
								if ((pos < (int)page_start[current_page + 1]) && (pos >= (int)page_start[current_page]))
								{ 
									// Item is currently on screen
									//clear prev. selected
									items[selected]->paint( false, (selected == (int) (page_start[current_page + 1]-1)) );
									//select new
									item->paint( true );
									selected = pos;
								} 
								else 
								{
									selected=pos;
									paintItems();
								}
								break;
							}
						}
					}
					break;
					
				case (CRCInput::RC_left):
				case (CRCInput::RC_vfdleft):
					if(!(items[selected]->can_arrow) || g_settings.menu_left_exit) 
					{
						msg = CRCInput::RC_timeout;
						break;
					}
					
				case (CRCInput::RC_right):
				case (CRCInput::RC_ok):
				case (CRCInput::RC_vfdright):
				case (CRCInput::RC_vfdok):
					{
						if(hasItem()) 
						{
							//exec this item...
							CMenuItem* item = items[selected];
							item->msg = msg;
							if ( fadeIn ) 
							{
								g_RCInput->killTimer(fadeTimer);

								frameBuffer->setBlendLevel(g_settings.gtx_alpha);

								fadeIn = false;
							}
							int rv = item->exec( this );
							switch ( rv ) 
							{
								case menu_return::RETURN_EXIT_ALL:
									retval = menu_return::RETURN_EXIT_ALL;
								case menu_return::RETURN_EXIT:
									msg = CRCInput::RC_timeout;
									break;
								case menu_return::RETURN_REPAINT:
									paint();
									break;
							}
						} 
						else
							msg = CRCInput::RC_timeout;
					}
					break;

				case (CRCInput::RC_home):
				case (CRCInput::RC_vfdexit):
					exit_pressed = true;
					msg = CRCInput::RC_timeout;
					break;
					
				case (CRCInput::RC_timeout):
					break;

				case (CRCInput::RC_sat):
				case (CRCInput::RC_favorites):
					g_RCInput->postMsg (msg, 0);
					
				//close any menue on setup-key
				case (CRCInput::RC_setup):
				case (CRCInput::RC_vfdmenu):
					{
						msg = CRCInput::RC_timeout;
						retval = menu_return::RETURN_EXIT_ALL;
					}
					break;

				default:
					if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) 
					{
						retval = menu_return::RETURN_EXIT_ALL;
						msg = CRCInput::RC_timeout;
					}
			}
			
			if(msg == CRCInput::RC_timeout) 
			{
				if ( fadeIn ) 
				{
					g_RCInput->killTimer(fadeTimer);
					fadeIn = false;
				}
				
				if ((!fadeOut) && false /*g_settings.widget_fade*/) 
				{
					fadeOut = true;
					fadeTimer = g_RCInput->addTimer( FADE_TIME, false );
					timeoutEnd = CRCInput::calcTimeoutEnd( 1 );
					msg = 0;
					continue;
				}
			}

			if ( msg <= CRCInput::RC_MaxRC )
			{
				// recalculate timeout f�r RC-Tasten
				timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
			}
		}
		
#ifdef FB_BLIT		
		frameBuffer->blit(x, y, width + SCROLLBAR_WIDTH, height + ((RADIUS_MID * 3) + 1) );
#endif		
	}
	while ( msg!=CRCInput::RC_timeout );
	
	hide();	

	if ( fadeIn || fadeOut ) 
	{
		g_RCInput->killTimer(fadeTimer);

		frameBuffer->setBlendLevel(g_settings.gtx_alpha);
	}

	if(!parent)
		CVFD::getInstance()->setMode(CVFD::MODE_TVRADIO);

	for (unsigned int count = 0; count < items.size(); count++) 
	{
		CMenuItem* item = items[count];
		item->init(-1, 0, 0, 0);
	}
	
	return retval;
}
damit hat man alle Fenster (mainmenu, mainsettings, etc...) die mit CMenuWidget() aufgestellt werden, spassig wird es bei den anderen Menues aber auf die gleiche Art.
Randbedingung: ich will das nur in der CFrameBuffer-Klasse implementieren und nicht spark-spezifischen Code über's ganze neutrino verteilen. Derselbe Code muss auf PC, Tripledragon und spark funktionieren.

Insofern ist der momentane Code nicht schön, aber er funktioniert unter den gegebenen Randbedingungen.
da habe ich vieles aufgeräumt ala e2, alles was framebuffer-mässig ist gehört zu framebuffer auch die Bilder (png/jpeg/gif) Bearbeitung.
Zuletzt geändert von mohousch am Montag 2. April 2012, 09:57, insgesamt 1-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

so, ich habe den Framebuffercode für Spark jetzt überarbeitet.
  • neutrino, tuxtxt, dvbsub, ... schreibt immer in einen "schattenpuffer" mit 1280x720
  • durch CFrameBuffer::getInstance()->blit() wird das in den echten Framebuffer skaliert / kopiert
  • an den "richtigen" Stellen im neutrino wird blit() aufgerufen. Wie mohousch geschrieben hat, ist das bei praktisch allen widgets ziemlich identisch.
  • ausserdem lasse ich noch einmal pro sekunde blit() aufrufen, falls es irgendwo vergessen wurde
Die unterschiede zu den anderen Plattformen, auf denen der Framebuffer immer dieselbe Auflösung hat, werden somit kleiner, die blit()-Aufrufe mal ausgenommen.

Ist also ungefähr so, wie von mohousch vorgeschlagen und funktioniert bei mir sehr gut.

Für die SCART-User ändert sich halt, dass die Schriften evtl. default eher klein sind, das kann man aber mit dem Schriftgrössenfaktor fixen. Damit es so aussieht wie vorher, dürfte X = 178% Y = 125% etwa das Richtige sein (habe ich auch auf HD-Geräten immer so).

Wenn euch auffällt, dass irgendein Menü ziemlich "lagged" (die Bildschirmausgabe nur einmal pro sekunde aktualisiert wird), dann meldet bite welches.

EDIT: Achtung, für Selberbauer: ihr müsst das aaa_base paket neu bauen und installieren, damit 12 statt bisher 8MB als Framebufferspeicher zugewiesen werden. Oder loadmodules bearbeiten.
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Über Scart ist es gewöhnungsbedürftig, da die Schrift nun recht klein ist, aber sonst :up:

@Der Menüpunkt Sprache müsste jetzt Sprache & Zeitzone heißen.
OlliT
Neugieriger
Neugieriger
Beiträge: 18
Registriert: Dienstag 6. März 2012, 11:18

Re: [Spark] Schönheitsfehler

Beitrag von OlliT »

jo läuft sehr gut... hab noch ab und an leichte gui-Reste bei 1080i (z.b. nach der Ansicht des großen EPG's mit 3 mal "Info")
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

AudioSlyer: tja, einen Tod müssen wir sterben ;) Ich habe auf allen boxen ausser der TD immer Schriftgrössenfaktor 178/125 eingestellt. Man könnte das ja zum default machen ;-)

OlliT: sicher dass du die letzte version hast? Schau mal in sources/neutrino-hd-td mit "git log", da muss mindestens

Code: Alles auswählen

commit add9187e02f224f22bdb490a02f2081b46be4ca1
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date:   Sun Apr 1 14:28:18 2012 +0200
drin sein. Weil jetzt dürfte es eigentlich nicht mehr sein, dass mit 1080 etwas anders dargestellt wird als mit 720, und Artefakte müsste es überall (auch auf der Tripledragon und der Coolstream) geben. Ich sehe aber keine.

Ansonsten schick mir mal deine neutrino.conf, nicht dass es an "seltsamen" Bildschirmeinstellungen liegt...

Edit: ich sehe gerade, dass ich noch einen kleinen Patch lokal hatte, der evtl. die Artefakte beeinflussen könnte. Der ist jetzt drin.
Wenn noch Artefakte auftreten bitte ein Konsolenlog von neutrino mitliefern, ob da meckermeldungen vom Blitter kommen.
Auch vom starten von neutrino, ob es sich über zuwenig Videoram beschwert.
OlliT
Neugieriger
Neugieriger
Beiträge: 18
Registriert: Dienstag 6. März 2012, 11:18

Re: [Spark] Schönheitsfehler

Beitrag von OlliT »

Hab dietmarw's Image von gestern Mittag genommen. Mal sehen vielleicht liegts auch an dem kleinen Patch... muss mal warten bis das nächste Image fertig ist.... waren auch nur 2 Kleine dünne Linien, die stehengeblieben sind. Hab allerdings auch ganz leicht den OSD-Bildbereich verändert.
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Den Streifen hatte ich auch mit 100% scallieren über Scart. Rechts ist ein dünner Streifen bei Info, Info stehengeblieben.
Ich hatte den Git-Stand ca. 13-14 Uhr - 02.04.2012.
ImageInfo hat diesen dann wieder gelöscht.

@Seife: Ich hab gute Augen, aber meine Frau will "178/125" haben. :blind
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Stand heute:
Keine Fragmente mehr.
Mein Optimum über Scart: Faktor 150/115
FB Anfang 400 Wiederholung 100

:up:
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Moin, mir ist gerade aufgefallen, dass die 24bit pngs Logos mit ihrer Transparenz die Gui überschreiben.
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Re: [Spark] Schönheitsfehler

Beitrag von mohousch »

warum jetzt 24bits?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

Bei mir nicht
mehr :-)

mohousch: für den alphachannel.
Edit: ist natürlich blödsinn, 24bit hat ja nichts mit alphachannel zu tun. Aber egal, transparenz funktioniert jetzt.
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Wenn in der Infobar die Signalstärke in der Nummerbox angezeigt wird, bleibt ein Streifen stehen, ...ChanHeight = 74;
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Stand 12.04.

Die Programmbeginnzeit in der Infobar wird bei mir abgeschnitten, wenn der Schriftfaktor über 130% liegt. War letzte Woche noch nicht so. (Programmnummer, Logos aktiviert)

DHCP funktionierte beim Start nach dem Flashen nicht. Ok, nicht so schlimm, da ich sowieso static nutze. Er hatte das 192.168.1.x Netz in der Netzwerkkonfiguration, aber von meinem DHCP Server hätte eine 192.168.2.x Ip kommen müssen.

Sonst alles :up:
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

AudioSlyer hat geschrieben:Stand 12.04.

Die Programmbeginnzeit in der Infobar wird bei mir abgeschnitten, wenn der Schriftfaktor über 130% liegt. War letzte Woche noch nicht so. (Programmnummer, Logos aktiviert)
Das ist nur wenn du bei der Ersteinrichtung bist, nach einem reboot ist es richtig, oder?
DHCP funktionierte beim Start nach dem Flashen nicht. Ok, nicht so schlimm, da ich sowieso static nutze. Er hatte das 192.168.1.x Netz in der Netzwerkkonfiguration, aber von meinem DHCP Server hätte eine 192.168.2.x Ip kommen müssen.
Im Buildsystem ist nirgends ein 192.168.1.x, deswegen kann es eigentlich nur bei dir liegen (ein wilder DHCP-Server im Netz?)
Wäre von meiner config was reingerutscht, wäre es 192.168.200.x ;-)
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Ok, nach der Faktoreinstellung muss man booten, damit man die Sendebeginnzeiten korrekt sieht ;)
Das mit dem DHCP checke ich beim nächsten Update. Frau ist im Moment mit dem Stand glücklich und ich hab meine Ruhe :lol:
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

Deswegen gabs den Faktor von mir ursprünglich nicht als menü- sondern nur als kommandozeilenoption :-)

Und Netzwerk kann ich mir wirklich nicht anders erklären, ich habe extra nochmal geschaut, aber der default ist dhcp und wenn da nichts kommt, dann hat die box einfach gar keine IP, aber sucht sich sicher nichts aus 192.168.1.x ... :-)
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox

Re: [Spark] Schönheitsfehler

Beitrag von flk »

vielen dank für das spark image. läuft schon ziemlich gut. weil wir hier bei schönheitsfehlern sind, ist mir auch noch was aufgefallen. bei 1080p und einem schriftgrößenfaktor ab 130 bleibt bei mir nach dem aufruf des movieplayer ein gelber streifen von der menüschrift zurück. getestet mit dietmarw image vom 22.4
AudioSlyer
Erleuchteter
Erleuchteter
Beiträge: 450
Registriert: Sonntag 28. Juli 2002, 01:18

Re: [Spark] Schönheitsfehler

Beitrag von AudioSlyer »

Das 1080 Icon wird nicht angezeigt, weil in der infoviewer,cpp 1088 anstatt 1080 im case steht.

case 1088:
icon_name = NEUTRINO_ICON_RESOLUTION_1080;
break;
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: [Spark] Schönheitsfehler

Beitrag von seife »

Hm, das muss ich mal auf den anderen Plattformen prüfen. Evtl. melden die ja 1088 statt 1080 zurück, dann müsste beides in den case-switch rein.