Seite 1 von 1

Merkwürdiges Verhalten unter Linux (Point(x,y))

Verfasst: 03.02.2015 14:14
von Bisonte
Hallo.

Meine weiteren Gehversuche unter Linux mit PB haben mal wieder so ihre Fallen ausgelegt.

Ich habe LinuxMint 17 Cinnemon x86 und das PB5.22 in einer VM installiert, um zu checken ob der Code
den ich unter Windows so verzapfe auch unter Linux laufen würde.

Nun ist mir ein merkwürdiges Verhalten aufgefallen.

Folgender Code :

Code: Alles auswählen

OpenWindow(0, 0, 0, 20, 20, "", #PB_Window_BorderLess)
StartDrawing(WindowOutput(0))
GrabDrawingImage(0, 0, 0, 1, 1)
StopDrawing()
StartDrawing(ImageOutput(0))
Color.l = Point(0,0)
StopDrawing()
CloseWindow(0)

Debug Hex(Red(Color)) + Hex(Green(Color)) + Hex(Blue(Color))
gibt beim ersten starten DFDFDF zurück. Bei weiteren Starts kommt aber 000. Aber ab und an kommt doch ein DFDFDF durch....
Kann das jemand erklären, oder ist das ein bösartiger Bug ?

(Der Versuch crossplattform die Hintergrundfarbe eines Fensters zu bestimmen, wenn diese noch nicht mit SetWindowColor() definiert wurde...)

Re: Merkwürdiges Verhalten unter Linux (Point(x,y))

Verfasst: 03.02.2015 14:21
von NicTheQuick
Am besten lässt du die Events noch abarbeiten, bevor du sowas machst. Und ein 'Delay(10)' scheint auch noch zu helfen.
Und übrigens geht das auch ohne 'GrabImage()'.

Code: Alles auswählen

OpenWindow(0, 0, 0, 20, 20, "", #PB_Window_BorderLess)
Delay(10)
While WindowEvent() : Wend
StartDrawing(WindowOutput(0))
Color.l = Point(0,0)
StopDrawing()
CloseWindow(0)

Debug Hex(Red(Color)) + Hex(Green(Color)) + Hex(Blue(Color))
Aber trotzdem kommt es in 8% der Fälle bei mir vor, dass ich auch 000 als Ergebnis kriege.
Vielleicht ist es doch besser die entsprechenden APIs dafür zu verwenden. ;)

Re: Merkwürdiges Verhalten unter Linux (Point(x,y))

Verfasst: 03.02.2015 14:28
von Bisonte
Das mit direkt vom Window abgreifen hab ich auch schonmal versucht, wurde allerdings immer
zu Color = 0... Daher mal mit dem Umweg...

Ok das mit den Events kann ich noch nachvollziehen, aber wieso gibt eine native PB Funktion
bei verschiedenen Starts unterschiedliche Werte zurück ? Das riecht doch nach Käferbefall, oder
liege ich da falsch ?

Und btw, Du sagst auch, das bei Dir ab und an falsche bzw andere Werte rauskommen.... Das
ist also kein Einzelfall. Sehr eigenartig...

Edit:

Nach ein wenig experimentieren scheint Delay(1) vollkommen ausreichend zu sein.

Code: Alles auswählen

OpenWindow(0, 0, 0, 20, 20, "", #PB_Window_BorderLess)
Delay(1)
While WindowEvent() : Wend
StartDrawing(WindowOutput(0))
Color.l = Point(0,0)
StopDrawing()
CloseWindow(0)

Debug Hex(Red(Color)) + Hex(Green(Color)) + Hex(Blue(Color))