ubuntuusers.de

Für diese Funktion musst du eingeloggt sein.

Image Sticking vermeiden

Status: Ungelöst | Ubuntu-Version: Xubuntu 10.10 (Maverick Meerkat)
Antworten |

FrancisA

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

Hallo, ich suche nach einer Möglichkeit, das Einbrennen in einem Monitor zu vermeiden. Und zwar habe ich erfahren, dass man einen schwarzen Streifen pro Bildwiederholung herunterbewegen kann (ohne ihn zu sehen) und damit das "Image Sticking" vermeiden kann. Diese Prozedur sollte im Hintergrund laufen. Wie kann man so etwas am besten in C++ lösen? Ich denke das wird so ein low level Programm sein, aber wie könnte man das umsetzen?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Franz,

nach meiner Erfahrung ist das "einbrennen" eigentlich ein Phänomen aus der frühen Zeit der Röhrenmonitore ... ("Als die Schirme noch grün waren")

Jedenfalls wüsste ich nicht, dass so etwas bei einem LCD-Schirm überhaupt passieren kann.
- geht es also um eine praktische Nutzanwendung oder um eine Fingerübung / das Prinzip ?

Auf jeden Fall spielt so etwas ja auf der Ebene des Grafik-Treibers, und Du wirst den dann wohl patchen müssen ... oder liege ich da falsch ?

track

AdaMin

Avatar von AdaMin

Anmeldungsdatum:
3. Mai 2010

Beiträge: 550

Stimmt, nur bei Röhrenmonitoren gab das.

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

track schrieb:

Hi Franz,

nach meiner Erfahrung ist das "einbrennen" eigentlich ein Phänomen aus der frühen Zeit der Röhrenmonitore ... ("Als die Schirme noch grün waren")

Jedenfalls wüsste ich nicht, dass so etwas bei einem LCD-Schirm überhaupt passieren kann.
- geht es also um eine praktische Nutzanwendung oder um eine Fingerübung / das Prinzip ?

Hallo track, es geht schon um eine praktische Nutzanwendung. Das "Image Sticking" gibt es schon bei LCD Monitoren, jedoch ist das nicht unbedingt ein Einbrennen, d.h. es lässt sich wieder rückgängig machen.

Auf jeden Fall spielt so etwas ja auf der Ebene des Grafik-Treibers, und Du wirst den dann wohl patchen müssen ... oder liege ich da falsch ?

track

Aha, eine einfachere Möglichkeit gibt es nicht? Ein thread, der beim Hauptprogramm immer wieder diese "Wanderung" laufen lässt?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Schau Dir mal den Aufbau von so einem X-Server an: http://monarch.qucosa.de/fileadmin/data/qucosa/documents/4378/data/desktop.html

Da ist von Klienten-Seite nicht viel an der Schirmsteuerung zu machen. Wir sind ja nicht mehr in der DOS-Zeit, wo man einfach am Video-Speicher herumgewuselt hat. Also musst Du wohl doch in den X-Server einsteigen ...

Vielleicht geht da auch schon was oberhalb der Treiber-Ebene, das weiß ich aber nicht genau.
(ich weiß nur, wie mühsam es war, auch nur eine kleine Änderung an der Tastatursteuerung bei den X-Server-Leuten anzuregen ... 😕 )

Na ja, "viel Erfolg" würde ich mal sagen.

track

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

FrancisA schrieb:

Das "Image Sticking" gibt es schon bei LCD Monitoren,

Quelle?

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

Hello World schrieb:

FrancisA schrieb:

Das "Image Sticking" gibt es schon bei LCD Monitoren,

Quelle?

Da brauche ich nur in Google eingeben '"Image Sticking" lcd monitor' oder 'ghost image'.

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Möchte nur kurz in den Raum werfen, dass sich eine Weile lang ein Teil der Window-Decorations auf meinen zweiten TFT „eingebrannt“ hatte. Ist wieder weg, aber es taucht definitiv auch bei TFTs auf. Oder es war ein sehr ulkiger Zufall.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7785

Mir ist einmal was eingebrannt, das war mein erster Rechner mit 14" Farb-CRT von Compaq. Seither nicht mehr weder bei neueren CRTs noch bei TFTs.

Ich habe für meinen TFT mal in Python (pygame) eine App geschrieben, die einen bestimmten Pixel befeuert hat. Weil manche Leute behauptet haben, damit könnte man einen defekten Pixel aufwecken. Hat bei meinem TFT mit einem Subpixelfehler leider nicht geklappt. Im Prinzip könntest du das auch so machen, eine App schreiben die ein 1x1 Pixel "Fenster" ohne Fensterdekoration aufmacht und dieses "Fenster" über den Bildschirm wandern läßt.

Einziger Nachteil, der Fenstermanager muß mitspielen: Fensterdeko weglassen können und einen Layer haben damit es immer im Vordergrund ist, und noch viel wichtiger, anderen Apps nicht den Fokus wegnehmen.

Allerdings wird das zu viel verschwendeter Rechenzeit führen. Wenn da sowas über den Bildschirm wandert muss ja auch ständig das Fenster drunter neu gezeichnet werden. Sofern du also nicht in einer ganz speziellen Situation bist (z.B. Standbild für den Plasma-Monitor im Schaufenster) lohnt sich das einfach nicht.

Über eines brauchst du dir auch keine Illusionen machen: Unsichtbar ist das nicht. Wenn es nicht dargestellt wird hilft es auch nicht gegen Einbrennen.

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

frostschutz schrieb:

Mir ist einmal was eingebrannt, das war mein erster Rechner mit 14" Farb-CRT von Compaq. Seither nicht mehr weder bei neueren CRTs noch bei TFTs.

[...]

Danke für die ausführliche Beschreibung. Na ja, dann ist das sehr kompliziert und das Ergebnis auch eher fragwürdig. Ist die Frage, ob man das nicht gleich lassen sollte.

Barabbas

Avatar von Barabbas

Anmeldungsdatum:
31. März 2007

Beiträge: 1651

Wohnort: Münster

Hallo,

ich vermute mal, dass im Wesentlichen dieses Phänomen gemeint ist, oder?

Egal: Ich wollte eigentlich nur sagen, dass es prinzipiell natürlich ohne viel Aufwand möglich ist, Linien auf den Screen zu zeichnen - auch ohne den Grafiktreiber zu patchen. Mit der xlib etwa. Hier findet sich etwa ein Beispiel, wie man mit Python Linien auf den Bildschirm zeichnet. Sollte sich ja recht leicht so anpassen lassen, dass die Linien automatisch gezeichnet und nach kurzer Zeit wieder gelöscht werden.

Letztlich glaube ich, dass man mit dem Energiesparmodus eines Bildschirms deutlich besser bedient ist. Aber wenn man unbedingt Linien malen will, geht das auch (irgendwie) auf Anwendungsebene. Das das nicht die effizienteste Lösung ist, ist natürlich auch klar ☺.

Besten Gruß,

brb

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

Barabbas schrieb:

Hallo,

ich vermute mal, dass im Wesentlichen dieses Phänomen gemeint ist, oder?

Egal: Ich wollte eigentlich nur sagen, dass es prinzipiell natürlich ohne viel Aufwand möglich ist, Linien auf den Screen zu zeichnen - auch ohne den Grafiktreiber zu patchen. Mit der xlib etwa. Hier findet sich etwa ein Beispiel, wie man mit Python Linien auf den Bildschirm zeichnet. Sollte sich ja recht leicht so anpassen lassen, dass die Linien automatisch gezeichnet und nach kurzer Zeit wieder gelöscht werden.

[...]

Vielen Dank, Barabbas, für deine Hinweise und Tipps. Ja genau diesen Effekt habe ich gemeint.

Ich habe das Progrämmchen probiert. Jetzt müsste ich noch den alten Bildschirminhalt grabben und beim nächsten jeweiligen Aufruf den wiederherstellen, der vorher schwarz oder dunkelgrau war. Aber das finde ich vielleicht noch heraus.

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

Vielleicht könnte man das auch auf Basis eines Bildschirmschoners machen, da müsste ich mir Sourcen besorgen.

Barabbas

Avatar von Barabbas

Anmeldungsdatum:
31. März 2007

Beiträge: 1651

Wohnort: Münster

Hallo Franz,

momentan bin ich leider etwas eingebunden, vll. schau ich mir es die Tage Mal an - zur Zeit finde ich die Xlib doch recht interessant. Eigentlich sollte ja folgendes möglich sein:

  1. Inverse Linie zeichnen

  2. Diese auf dem Bildschirm bringen

  3. Im nächsten Durchgang direkt eine weitere inverse Linie darüber legen, so dass der ursprüngliche Bildschirminhalt wieder hergestellt wird.

Ist natürlich dahingehend anfällig, als dass in dieser Zeit kein anderes Programm an der entsprechenden Stelle neu gezeichnet haben darf - sonst käme es zu Darstellungsfehlern. Aus Gründen der Effizienz könnte man auf alle Fälle aber testen, ob dieses Vorgehen nicht vielleicht zumindest von der Grundidee her zu brauchbaren Ergebnissen führt.

Wie auch immer: Ich finde das technisch zwar interessant umzusetzen, bin aber grundsätzlich der Meinung, dass der Energiesparmodus für dich deutlich interessanter ist: Spricht in deinem Szenario etwas dagegen, den Monitor nach 5 Minuten abschalten zu lassen? Ich meine: Im normalen Betrieb verändern sich die Inhalte ja ausreichend oft, als dass kein "Nachleuchten" zu befürchten sein sollte. Auch ein schwarzes Bild als Bildschirmschoner sollte seinen Zweck doch schon erfüllen, oder? Keine Ahnung. Du musst dir halt vor Augen führen, dass das Skript, das du vor Augen hast, permanent grafische Zeichnungen vornimmt - und das muss es auch noch so schnell tun, dass man es optimalerweise gar nicht zur Kenntnis nimmt. Wirklich *effizient* kann das mMn kaum sein.

Wie auch immer. Mal schauen, was geht ☺.

Besten Gruß,

brb

FrancisA

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2006

Beiträge: 965

Wohnort: Upper Austria

Hallo Barabbas,

ich habe mir das einmal angesehen. Um das Bild wieder zu restaurieren, habe ich ausser

gc_val.function = GXxor;

keine Möglichkeit gefunden. Dann wird es nciht schwarz, aber vielleicht ist es besser als nichts.

als test habe ich das einmal so

  // inverse
  XFillRectangle(display, root_win, gc_line, 50, 50, 600, 400);
  XFillRectangle(display, root_win, gc_line, 150, 150, 600, 400);
  XFlush(display);
  sleep(1); // nur zum test
  // back inverse = original
  XFillRectangle(display, root_win, gc_line, 50, 50, 600, 400);
  XFillRectangle(display, root_win, gc_line, 150, 150, 600, 400);

Ich habe leider nicht herausgefunden, wie man den Bildschirmabschnitt "richtig" restoren könnte (also zuerst sichern und dann restore). Aber das würde wahrscheinlich auch auf die Performance gehen.

Antworten |