manuel-serrano / bigloo

a practical Scheme compiler
http://www-sop.inria.fr/indes/fp/Bigloo
Other
135 stars 19 forks source link

Port gstreamer API from version 0.10 to 1.x. #38

Closed jamesjer closed 4 years ago

jamesjer commented 4 years ago

Gstreamer 1.0 was released in September 2012, and version 0.10 was deprecated in March 2013 (see https://gstreamer.freedesktop.org/news/). Linux distributions have started removing version 0.10, as it has many known security problems and no maintenance.

This commit updates bigloo's interface to use gstreamer 1.x instead of 0.10. I have deliberately not kept any backwards compatibility with versions older than 1.0.

Note that the changes to bglgst_thread.c are an abomination, but at least this version compiles. Some other approach should be figured out .

jamesjer commented 4 years ago

Regarding bglgst_thread.c, I wonder if something like this would work. Create a pthread_key_t with a destructor function. For each bigloo function that a gstreamer thread can call into (it must be possible to enumerate these), first check the value of that key for the current thread. If it is NULL, then call bglpth_thread_new and set its return value as the value of the key, then call bglpth_thread_env_create on it. When the key destructor function is called, that means the thread is exiting, so call bglpth_thread_cleanup on the value of the key.

manuel-serrano commented 4 years ago

Could you explain what's the problem with threads and what should be done? I'm no longer using gstreamer and I'm not willing to invest a lot in that library but if there is something simple I could do, I'm of course willing to help.