/++ dub.sdl:
	name "test"
	dependency "eventcore" path=".."
+/
module test;

import eventcore.core;
import core.thread;
import std.stdint;

intptr_t s_id; // thread-local

void main()
{
	auto ed = cast(shared)eventDriver;

	auto thr = new Thread({ threadFunc(ed); });
	thr.start();

	// keep the event loop running for one second
	auto tm = eventDriver.timers.create();
	eventDriver.timers.set(tm, 1.seconds, 0.seconds);

	ExitReason er;
	do er = eventDriver.core.processEvents(Duration.max);
	while (er == ExitReason.idle);
	assert(er == ExitReason.outOfWaiters);

	assert(s_id == 42);
}

void threadFunc(shared(NativeEventDriver) drv)
{
	drv.core.runInOwnerThread((int id) {
		s_id = id;
	}, 42);
}