WindowOutput fehlerhaft?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

WindowOutput fehlerhaft?

Beitrag von DarkSoul »

Hallo,

ich habe folgendes Problem:

(Der Code ist der Beispielcode aus der Hilfe um ein Plot() ergänzt, um das Problem darzustellen)

Code: Alles auswählen

If OpenWindow(0, 0, 0, 220, 100, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_Repaint ; Redraw on the window every time the window is repainted
        StartDrawing(WindowOutput(0))
          ;Plot(10, 10, 255)
          Box(10, 10, 50, 50, RGB(255, 0, 0)) 
        StopDrawing()
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf
Läuft soweit gut.

Sobald ich den Plot() wieder aktiviere, stürzt das Programm mit "Plot is outside the drawing area".

Wenn ich versuche, DrawImage() an dieser Stelle zu nutzen, dann stürzt das Programm mit "Invalid memory access" ab.

Dürfte doch eigentlich nicht sein. Die Box() macht er ja immerhin.

Tritt ausschließlich auf WindowOutput() auf.

PB-Bug?

- PB 5.51 x64
- Linux Mint 18 x64
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: WindowOutput fehlerhaft?

Beitrag von mk-soft »

Versuch es mal mit den Subsystem "gtk2". Bei "gtk3" (jetzt Standard) kann man nicht mehr auf dem WindowOutput alles machen. Ist eine Einschränkung von "gtk3".
Am besten auf CanvasGadget umsteigen...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: WindowOutput fehlerhaft?

Beitrag von DarkSoul »

Ich weiß, dass CanvasGadget die bessere Option ist. Es ist aber ein Altprojekt, das ich gerne auf Linux hätte.

Wo stelle ich das Subsystem um?
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: WindowOutput fehlerhaft?

Beitrag von mk-soft »

Menü -> Compiler Option -> Library Subsystem = "gtk2" :wink:

P.S. Natürlich ohne Anführungszeichen
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: WindowOutput fehlerhaft?

Beitrag von DarkSoul »

Danke!

Edit:
Nase endgültig voll von PB! Werde ich nicht mehr nutzen. Die Qualität lässt mit jeder Version immer mehr nach.

- DrawImage() macht Mist mit 4-Bit-Bitmaps. (Grüne Linie am linken Bildrand)
- Skalieren mit ResizeImage() im Raw-Modus ohne Interpolation funktioniert nicht (Pixel-Art ist verschwommen)
- PB stürzt ab, wenn ich die fertige Executable erstellen will

Habe das eher kleine Projekt nun innerhalb von einer Stunde nach C übersetzt und seitdem absolute keine Probleme mehr. Alles funktioniert nun, wie es soll.

Daher hat sich das jetzt trotzdem erledigt.
Bild
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: WindowOutput fehlerhaft?

Beitrag von uweb »

Ich gehöre zu denen die leider nur wenig Zeit für PB haben. Deswegen bekomme ich oft Tricks wie man mit kleinen Unzulänglichkeiten in PB umgehen kann auch erst mit wenn das Problem mich schon Zeit gekostet hat. Ja, es ärgert mich auch manchmal wenn irgend etwas an PB oder der Handbuchübersetzung nicht 100% ist.
Auf der anderen Seite gilt für mich, daß das Problem oft vor dem Bildschirm sitzt, ein schlechter Handwerker immer auf sein Werkzeug schimpft und mir von Anfang an klar war, daß ich mit PB auf einen Außenseiter setze.
Mit anderen Worten: Bei mir kommt es oft vor, daß es nicht an PB liegt oder es bereits einen Workaround gibt den ich aber noch nicht kenne.
In den wenigen anderen Fällen lebe ich mit solchen Dingen und das meist sehr gut, weil das Forum mich immer wieder daran erinnert weshalb ich PB liebe: Die Hilfsbereitschaft der Leute im Forum.
Es gibt wohl auch für viel weiter verbreitete Sprachen mit deutlich mehr Resourcen nicht viele deutschsprachige Foren in denen man an einem Werktag nach Mitternacht innerhalb von weniger als 3 Stunden den entscheidenen Tipp bekommt und dabei von Wichtigtuern und falschen Fährten verschont bleibt.
Ein anderer Grund weshalb ich PB liebe ist die IDE. Ich brauche nicht erst ein Studium zu machen um damit arbeiten zu können. Natürlich gibt es einiges das ich mir wünschen würde, aber ich brauche es nicht unbedingt.
Aufgrund meines Alters erlaube ich mir also einen altklugen, aber gut gemeinten Tipp: Heute nichts mehr daran machen, in der kommenden Nacht etwas mehr schlafen und PB morgen noch einmal eine Chance geben.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: WindowOutput fehlerhaft?

Beitrag von DarkSoul »

PB unter Linux hat bei mir schon die letzte Chance von der letzten Chance der letzten Chance gehabt.

Jetzt ist bei mir Schluss. PB sortiere ich jetzt aus.

Folgende Probleme haben mich in der Vergangenheit unter Linux geärgert:

- Konsolenbefehle teilweise fehlerhaft (Das Farbenproblem, das ich hier vor einiger Zeit gepostet habe. Lösung: Alles übersetzt nach C und alles wurde gut.)
- Die unbrauchbare Hilfe, wo das gelbe rechte Fenster fehlt (Habe ich im anderen Supportforum gemeldet)
- Fehlerhaft resizendes PB-Editorfenster (Ebenfalls reportet)
- PlaySound() spielt nur jede zweite PCM-Wave ab und bei Mono-OGG kommt der Ton nur aus dem linken Lautsprecher. (habe ich auch mal reportet und anschließend mit einem externen OGG-Decoder workarounded)
- Toolbar-Icons werden nicht angezeigt (png, gif, ico... alles versucht). Sowohl die Native Linuxversionen als auch die über Wine betriebenen Windows-Versionen sind betroffen. Sogar PB selbst ist davon nicht ausgenommen.
- Speichern einerr 24Bit-BMP bzw. PNG in 8Bit mittels SaveImage(), die bereits weniger als 256 Farben hat, führt (auch unter Win) zur unnötigen, rätselhaft starken Farbverfäschung. (BMP encoder hatte ich mir daraufhin selbst gebastelt und für PNG iwas externes genommen. Habe ich auch mal im anderen Forum reportet)
- Von dem Versprechen, dass derselbe Source auf beiden Systemen läuft, habe ich nur wenig feststellen können. Manche Steuerelemente (z.B. Combobox) werden so sehr verschieden dargestellt, dass das Layout völlig kaputt geht. Hinzu kommt, dass das mitgelieferte Framework oft lückenhaft ist, so dass ich das alles gleich hätte mit unwesentlichem Mehraufwand in C schreiben können, weil ich sowieso auf direkte OS-API zurückgreifen muss. Also kann ich gleich 2x programmieren oder lieber Java nehmen.
- Beim Skalieren eines Fensters flackern die Gadgets, obwohl diese gar nicht mitskaliert werden. Auch irgendwie ein PB-Only-Problem.
- PrintRequester öffnet nicht, obwohl ein funktionierender Drucker vorhanden wäre. (Bei einer Win-Version durch Wine gehts witzigerweise)

Die durch Wine betriebenen Windows-Versionen funktionieren insgesamt meistens besser als ihre nativen Linux-Brüder.

Die Sachen, die ich reportet habe, wurden mir als Bug bestätigt. Doch außer heißer Luft ist bisher nicht eines davon gefixt worden.

Bei dem Problem aus diesem Thread sehe ich ein: Ist eine OS-Limitation, für die PB nichts kann.

Die Hilfbereitschaft hier im Forum ist in der Tat sehr gut. Das zweifle ich keinesfalls an. :allright:

PB und die damit erstelllte Software ist der einzige Grund, warum ich noch ein Windows parallel installiert habe.
Bild
RetroBIT
Beiträge: 1
Registriert: 28.01.2017 18:24

Re: WindowOutput fehlerhaft?

Beitrag von RetroBIT »

mk-soft hat geschrieben:Menü -> Compiler Option -> Library Subsystem = "gtk2" :wink:

P.S. Natürlich ohne Anführungszeichen
Moin moin,
diese Fehlermeldung hatte ich auch, die Option Library Subsystem = "gtk2" hat geholfen :-)
Danke!
System:
Ubuntu 16.04.1 mit gnome3
PureBasic heute installiert, wie hier im Forum beschrieben.

Da dies meine erste Erfahrung mit PureBasic ist und das betreffende Programm mit dem AVR-NET-IO 1.03 von POLLIN kommuniziert,
was ja nicht so trivial ist,
bin ich erstmal eher begeistert von PureBasic.
Unter W8.1 hat übrigens alles auf Anhieb geklappt,
jedoch möchte ich lieber mit LINUX arbeiten.

ein erholsames Wochenende, wünscht,
RetroBIT
Benutzeravatar
pcfreak1201
Beiträge: 38
Registriert: 17.12.2011 13:01
Computerausstattung: Linux Mint 17.3 (Rosa) x64 | PB 5.42LTS x64 (Linux+Win)
Wohnort: Arnsberg

[Bug]Re: WindowOutput fehlerhaft?

Beitrag von pcfreak1201 »

Hallo!

Anscheinend ist die Linux-Version (5.44LTE, Linux 64bit auf Linux Mint 18.1 Mate+Chinnamon) ziemlich buggy :(
Habe gerade mal versucht ein einfaches Programm zur Grafikausgabe zu schreiben, doch entweder es erscheint ein Speicherfehler (GTK3/default-Modus) oder ein Linker Error, wenn ich auf GTK2 zurückschalte. Unter Windows funktioniert das Beispiel einwandfrei!

Code: Alles auswählen

EnableExplicit

Define sText.s = "Test"
Global Window_0
Global Event

If OpenWindow(0, 0, 0, 600, 400, "Test-Fenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  If StartDrawing(WindowOutput(0))
    DrawingMode(#PB_2DDrawing_Transparent)
      DrawText(200, 200, sText) ;<-- hier erfolgt der Absturz
    StopDrawing()
  EndIf

  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
    
EndIf
Mit GTK2 als Subsystem erscheint:
Window.a(WaitWindowEvent.o): In Funktion `PB_WaitWindowEvent2':
WaitWindowEvent.c:(.text+0x33): Nicht definierter Verweis auf `gtk_selection_data_free'
WaitWindowEvent.c:(.text+0xeb): Nicht definierter Verweis auf `gtk_events_pending'
WaitWindowEvent.c:(.text+0xf4): Nicht definierter Verweis auf `gtk_events_pending'
WaitWindowEvent.c:(.text+0x143): Nicht definierter Verweis auf `gtk_main_iteration_do'
WaitWindowEvent.c:(.text+0x161): Nicht definierter Verweis auf `gtk_main_iteration'
Window.a(Window.o): In Funktion `PB_Window_FlushEvents':
...
collect2: error: ld returned 1 exit status
Kann ich noch etwas machen, um PB unter Linux lauffähig zu bekommen?

Gruß,
pcfreak


Nachtrag:
Hatte vergessen, daß Mint 18 schon auf GTK3 basiert und deswegen die gtk2-Libs erst wieder nachinstalliert werden mußten.
Danach läuft das Beispiel auch mit Subsystem gtk2 ...
Antworten