- `etc` module was renamed to `etcpak` and modified to use the new library. - PKM importer is removed in the process, it's obsolete. - Old library `etc2comp` is removed. - S3TC compression no longer done via `squish` (but decompression still is). - Slight modifications to etcpak sources for MinGW compatibility, to fix LLVM `-Wc++11-narrowing` errors, and to allow using vendored or system libpng. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
35 lines
687 B
C++
35 lines
687 B
C++
#ifndef __DARKRL__TASKDISPATCH_HPP__
|
|
#define __DARKRL__TASKDISPATCH_HPP__
|
|
|
|
#include <atomic>
|
|
#include <condition_variable>
|
|
#include <functional>
|
|
#include <mutex>
|
|
#include <thread>
|
|
#include <vector>
|
|
|
|
class TaskDispatch
|
|
{
|
|
public:
|
|
TaskDispatch( size_t workers );
|
|
~TaskDispatch();
|
|
|
|
static void Queue( const std::function<void(void)>& f );
|
|
static void Queue( std::function<void(void)>&& f );
|
|
|
|
static void Sync();
|
|
|
|
private:
|
|
void Worker();
|
|
|
|
std::vector<std::function<void(void)>> m_queue;
|
|
std::mutex m_queueLock;
|
|
std::condition_variable m_cvWork, m_cvJobs;
|
|
std::atomic<bool> m_exit;
|
|
size_t m_jobs;
|
|
|
|
std::vector<std::thread> m_workers;
|
|
};
|
|
|
|
#endif
|