diff foosdk/sdk/foobar2000/SDK/threadsLite.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/foobar2000/SDK/threadsLite.h	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,39 @@
+#pragma once
+namespace fb2k {
+	//! pfc::splitThread() + async_task_manager::acquire
+	void splitTask(std::function<void()>);
+	void splitTask(pfc::thread::arg_t const&, std::function<void()>);
+	abort_callback& mainAborter();
+
+	void inCpuWorkerThread(std::function<void()> f);
+}
+
+
+
+// ======================================================================================================
+// Most of main_thread_callback.h declares API internals and obsolete helpers.
+// In modern code, simply use fb2k::inMainThread() declared below and disregard the rest.
+// ======================================================================================================
+namespace fb2k {
+	//! Queue a call in main thread. Returns immediately. \n
+	//! You can call this from any thread, including main thread - to execute some code outside the current call stack / global fb2k callbacks / etc. \n
+	//! Guaranteed FIFO order of execution. See also: main_thread_callback::add_callback().
+	void inMainThread(std::function<void() > f);
+	//! Call f synchronously if called from main thread, queue call if called from another.
+	void inMainThread2(std::function<void() > f);
+
+	//! Clone abort_callback, suppress call if original abort_callback becomes set prior to reaching main thread.
+	void inMainThread(std::function<void() > f, abort_callback&);
+
+	//! Synchronous / abortable version. May exit *before* f() finishes, if abort becomes set.
+	void inMainThreadSynchronous(std::function<void() > f, abort_callback& abort);
+
+	//! Synchronous blocking version. \n
+	//! Uses new foobar2000 v2.0 methods if available, synchronizing to main thread via SendMessage(). \n
+	//! Introduced to help recovering from method-called-from-wrong-context scenarios. Does *not* guarentee FIFO execution order contrary to plain inMainThread().
+	void inMainThreadSynchronous2(std::function<void() > f);
+
+	//! Helper class for threads that call fb2k objects. Mainly needed for Android shims. You can safely ignore this. \n
+	//! Guaranteed to have startHere(), isActive() and waitTillDone() methods only.
+	typedef pfc::thread2 thread;
+}