Search code examples
eventswxwidgets

Handle Events in wxWidgets


I'm creating a game engine using wxWidgets and OpenGL. I'm trying to set up a timer so the game can be updated regularly. I don't want to use wxTimer, because it's probably not accurate enough for what I need. I'm using a while (true) and a wxStopWatch:

while (true) {
    stopWatch.Start();
    <handle events> // I need a function for this
    game->OnUpdate();
    game->Refresh();
    if (stopWatch.Time() < 1000 / 60)
        wxMilliSleep(1000 / 60 - stopWatch.Time());
}

What I need is a function that will handle all the wxWidgets events, because right now my app just freezes.

UPDATE: It doesn't. It's slightly jerky on Windows, and when tested on a Mac, it was extremely jerky. Apparently EVT_IDLE doesn't get called consistently on Windows, and even less on a Mac.

UPDATE2: It actually mostly does. It's fine on a Mac; I misunderstood my Mac tester's reply.


Solution

  • Instead of using a while (true) loop, I'm using EVT_IDLE, and it works perfectly.

    UPDATE: It doesn't. It's slightly jerky on Windows, and when tested on a Mac, it was extremely jerky. Apparently EVT_IDLE doesn't get called consistently on Windows, and even less on a Mac.

    UPDATE2: It actually mostly does. It's fine on a Mac; I misunderstood my Mac tester's reply.