Skip to content

Commit

Permalink
Merge pull request #243 from vibe-d/windowseventids
Browse files Browse the repository at this point in the history
Use a global event ID counter on Windows
  • Loading branch information
l-kramer authored Oct 2, 2024
2 parents 3cdca04 + 16da4af commit 0cdddc4
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions source/eventcore/drivers/winapi/events.d
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ final class WinAPIEventDriverEvents : EventDriverEvents {
EventSlot[EventID] m_events;
CRITICAL_SECTION m_mutex;
ConsumableQueue!Trigger m_pending;
uint m_idCounter;
static shared uint m_idCounter;
}

this(WinAPIEventDriverCore core)
Expand Down Expand Up @@ -70,8 +70,10 @@ final class WinAPIEventDriverEvents : EventDriverEvents {

override EventID create()
{
auto id = EventID(m_idCounter++, 0);
if (id == EventID.invalid) id = EventID(m_idCounter++, 0);
import core.atomic : atomicOp;

auto id = EventID(atomicOp!"+="(m_idCounter, 1), 0);
if (id == EventID.invalid) id = EventID(atomicOp!"+="(m_idCounter, 1), 0);
m_events[id] = EventSlot(1, new ConsumableQueue!EventCallback); // FIXME: avoid GC allocation
debug (EventCoreLeakTrace) {
import core.runtime : defaultTraceHandler;
Expand Down

0 comments on commit 0cdddc4

Please sign in to comment.