[Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

[Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von Programie »

Hi,

ich habe aktuell das Problem, dass bei einem OpenScreen() bei einem Multimonitor Setup die anderen Bildschirme schwarz werden und beim Beenden der Anwendung das ursprüngliche Displaysetup nicht mehr wiederhergestellt wird. In meinem Fall erscheint die Anwendung auf dem linken Monitor und nach Beenden bleiben die anderen Bildschirme schwarz und ich muss sie händisch in der Displaykonfiguration wieder aktivieren.

Besonders nervig ist das Verhalten, wenn die Anwendung einen OpenScreen() mit einer anderen Auflösung startet da dabei die Desktopauflösung nach dem Beenden auch bei dieser Auflösung bleibt.

Bei anderen Anwendungen, welche nicht mit PureBasic programmiert wurden, konnte ich das Problem noch nicht nachstellen.

Meine Konfiguration:

OS: Ubuntu 20.10 x64
Grafikkarte: NVIDIA GeForce GTX 1080
Treiber: nvidia-driver-450 (proprietary) aus dem Ubuntu Repo
Desktop Environment: Cinnamon unter X.Org
PureBasic: 5.73 x64

Hat noch jemand dieses Verhalten bzw. weiß wie man das los wird?
BildBildBildBild
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von #NULL »

Passiert bei mir auch. Ich stelle das dann immer mit xrandr wieder her, z.B.:

Code: Alles auswählen

xrandr --output LVDS-1 --mode 1440x900 --pos 0x0 --output HDMI-3 --mode 1680x1050 --pos 1440x0
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von Programie »

OK, aber das ist ja auch nur ein Workaround.

Komisch ist aber, dass das bei anderen Anwendungen/Spielen nicht auftritt. Ich hatte zwar auch schon den Fall, dass die Anwendung auf dem falschen Bildschirm startete. Aber dass die komplette Displaykonfiguration durcheinander gebracht wird, hatte ich nur in Verbindung mit dem OpenScreen() von PB Anwendungen.
BildBildBildBild
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von DarkDragon »

Liegt an SDL vermutlich:
https://www.vogons.org/viewtopic.php?p=781914

Da gabs auch eine Environment Variable für den Multimonitor Betrieb, finde sie aber grad nicht mehr.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von tft »

bei Open Screen ist das normal. Wenn du mehr Monitore hast. Must du WindoedScreen Verwenden. Also den Screen auf ein Window Packen. FullScreen Anwendungen mit echtem Full Screen machen immer alle anderen Monitore aus. Das macht die Grafikkarte, nicht das Windows System. Und die meisten Games erkennen Multi Monitoring und Starten dann in einem Borderless WIndow Mode. Da ja zum Beispiel Windows die Programme mit Alt Tab durchswitschen kann. Ob das nun auch bei MAC oder LINUX genauso ist .......... Probiere mal das hier, Werden dann auch die anderen Monitore Abgeschaltet. ?

Code: Alles auswählen


InitEngine3D() : InitSprite() 

InitMouse() ;- >>>> NEU

OpenWindow(0,0,0,800,600,"Test Fenster") : OpenWindowedScreen(WindowID(0),0,0,800,600)

CreateCamera(0,0,0,100,100)
MoveCamera(0,0,0,2)

CreateCube(0,1)
CreateEntity(0,MeshID(0),0)

Sprite = LoadSprite(#PB_Any,"click.png")

Repeat
  
  Event = WindowEvent() :  If Event  > 0  : Select Event : Case #PB_Event_CloseWindow : Exit = 1 : EndSelect : EndIf : 
  
  ExamineMouse()
  
  mx = MouseX()
  my = MouseY()
  
  RotateEntity(0,0.1,0.2,0.3,#PB_Relative)    
  
  RenderWorld() : FlipBuffers() : Delay(1)
  
  
    
Until Exit = 1 

End
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von Programie »

Bei einem Windowed Screen werden die anderen Bildschirme nicht abgeschalten. Was ja auch verständlich ist, da es einfach nur ein Fenster ist.

Gerade bei älteren Spielen denke ich nicht, dass die Entwickler da von einem Multi Monitor Setup ausgegangen sind. Und da hab ich das Problem nicht, dass die anderen Monitor abgeschalten werden.
BildBildBildBild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von tft »

na ja .... Optisch ist ein FullScreen von eine Windowed Screen ja auch nicht zu unterscheiden. Ich hatte unter Windows auch diese Frage. Der Programmierer muss halt schauen wieviele Monitore da sind. Und ob diese eventuell als ein Grosser Konfiguriert wurde. NVidea Karten können das nämlich. Dazu gibt es den Befehl EXAMINEDESKTOP() . Wenn du mehr monitore hast. Must du ein Windowed Screen aufmachen. Dazu kommt dann noch. Das du bei Fullscreen nicht wählen kannst auf welchem Monitor dieser denn nu angezeigt werden soll. Jede Screen Ausgabe arbeitet nur mit Monitor 1.
Dann gibts da noch das Technische Detail. Das ja jeder Monitor seinen eigenen Zeitpunkt für den Sync hat. Wie gesagt. Purebasic kann von hause nur auf dem Monitor 1 mit den FullScreen Sachen arbeiten. Es gibt zwar die möglichkeit über das System etwas selber zu bauen. Aber ein WScreen ist ja nun nicht wirklich langsamer. Oder ?
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von Programie »

Ja, optisch ist Fullscreen und Windowed Screen in einem maximierten Fenster mit #PB_Window_Borderless das gleiche. Aber es gibt durchaus Gründe für richtiges Fullscreen statt Windowed Fullscreen: Performance. Zumindest hab ich das so in Erinnerung, dass man mehr FPS erreicht wenn die Anwendung/Spiel im echten Fullscreen statt Windowed Fullscreen läuft. Und zumindest damals unter Windows 7 wurde bei einer richtigen Fullscreen Anwendung das Aero Theme auf Basic gesetzt wodurch nochmal mehr Performance rausgeholt wurde.

Bei einigen Spielen kann man auch auswählen auf welchem Bildschirm der Screen starten soll. Kann allerdings auch sein, dass es da nur nach einem richtigen Fullscreen aussieht aber dann doch nur ein Windowed Fullscreen genutzt wird.
BildBildBildBild
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Re: [Linux] OpenScreen deaktiviert die anderen Bildschirme und stellt sie nicht mehr her

Beitrag von Programie »

Eine Sache ist mir noch aufgefallen: Es gibt von OGRE einen Sample Browser welcher die beschriebenen Probleme nicht hat. Da gibt es auch einen richtigen Fullscreen Mode welcher den Screen nur auf dem primären Bildschirm öffnet aber die anderen aktiv lässt. Und nach dem Beenden wird auch meine Bildschirmkonfiguration nicht durcheinander gebracht.

Das Ganze scheint also kein generelles Problem oder ein Problem von OGRE zu sein sondern irgendwie in Verbindung mit der Screen-Implementierung in PureBasic zu stehen.
BildBildBildBild
Antworten