InfiniTimeOrg / InfiniTimeOrg/InfiniSim

Problems building on OS X

Open
#25 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement help wanted
Dominant language
C++
Stars
203
Forks
97
PR merge metrics
No merged PRs in 30d

Description

Have anyone managed to get InfiniSim running on OS X? I've made a small attempt, but haven't had much success. I did get it to show the start screen, but no events are working (maybe due to that I had to rewrite some code).

Summary of making it compile:
Change to using https://github.com/trenki2/SDL2Test/blob/master/cmake/FindSDL2.cmake to find SDL. (Installed with the downloadable dmg-file with development libraries from SDL homepage https://www.libsdl.org/download-2.0.php)

Then I had to change some code in the Alarmcontroller.cpp:
auto now = std::chrono::system_clock::now(); alarmTime = now; time_t ttAlarmTime = std::chrono::system_clock::to_time_t(now);

Then I had to remove the call:
// SDL_CreateThread(tick_thread, "tick", NULL);

And modify the while loop to force the UI to be visible:
SDL_Event e; bool quit = false; while(!quit) { SDL_PollEvent(&e); if (e.type == SDL_QUIT){ quit = true; } // SDL_Delay(LV_DISP_DEF_REFR_PERIOD); // lv_tick_inc(LV_DISP_DEF_REFR_PERIOD); // Crashed when called here or in tick_thread. fw.handle_keys(); // key event polling fw.handle_touch_and_button(); fw.refresh(); usleep(LV_DISP_DEF_REFR_PERIOD * 1000); }

If I run it with unmodified code it crashes with: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'nextEventMatchingMask should only be called from the Main Thread!'

Maybe this can be of help if someone else tries to make it work on a Mac?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Alarmcontroller.cpp and the SDL discovery change described in the issue, then reproduce the unmodified build and the Main Thread exception on OS X. Trace the SDL event loop, tick_thread, and lv_tick_inc calls to determine why events fail. Done means the simulator builds and runs on OS X with working events without the reported crash.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, macos
Domain
build-system, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.