LCL ohne GTK auf g_signal_connect reagieren.

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

LCL ohne GTK auf g_signal_connect reagieren.

Beitrag von Mathias »

Ich hab folgendes Beispiel, welches funktioniert, wen das Widget-Set auf GTK2 eingestellt ist.
Und dies ist der Fall, weil bei GTK2-LCL irgendwo intern ein g_main_loop_new() oder was ähnliches vorhanden ist.

Code: Alles auswählen

procedure message_cb(bus: PGstBus; msg: PGstMessage; user_data: Pointer);
var
  s: string;
  form: TForm1 absolute user_data;
begin
  WriteLn(form.Name);
  WriteLn(GST_MESSAGE_TYPE(msg));
  WriteStr(s, GST_MESSAGE_TYPE(msg));
  form.Memo1.Lines.Add(s);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  pipeline: PGstElement;
  bus: PGstBus;
begin
  gst_init(@argc, @argv);
  pipeline := gst_parse_launch(PChar('filesrc location="/home/tux/Schreibtisch/sound/test.mp3" ! decodebin3 ! audioconvert ! audioresample  ! autoaudiosink'), nil);
  bus := gst_element_get_bus(pipeline);
  gst_bus_add_signal_watch(bus);

  gst_element_set_state(pipeline, GST_STATE_PLAYING);
  g_signal_connect(G_OBJECT(bus), 'message', TGCallback(@message_cb), Self);
  gst_object_unref(bus);
end; 
Stelle ich das Widget-Set zB. auf customdraw um, funktioniert es wie erwartet nicht mehr.
Dies ist natürlich auch der Fall wen man man die WinApi verwendet.
Gibt es eine Möglichkeit, das dies auch geht.
Einzig was mir in den Sinn kommt, auf Window für GTK2 kompilieren.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 962
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: LCL ohne GTK auf g_signal_connect reagieren.

Beitrag von PascalDragon »

Mathias hat geschrieben: Mo 23. Sep 2024, 16:41 Einzig was mir in den Sinn kommt, auf Window für GTK2 kompilieren.
Korrekt. Sonst hat der Code schließlich keine Ahnung von GTK Signalen. Genauso wie ein GTK Programm keine Ahnung von Qt Signalen oder WinAPI Nachrichten hat.
FPC Compiler Entwickler

Antworten