0032065: Samples - use MODULARIZE within WebGL sample
[occt.git] / samples / webgl / main.cpp
1 #include <iostream>
2
3 #include "WasmOcctView.h"
4
5 #include <Message.hxx>
6 #include <Message_Messenger.hxx>
7 #include <Message_PrinterSystemLog.hxx>
8 #include <OSD_MemInfo.hxx>
9 #include <OSD_Parallel.hxx>
10
11 #include <emscripten.h>
12 #include <emscripten/html5.h>
13
14 //! Dummy main loop callback for a single shot.
15 extern "C" void onMainLoop()
16 {
17   // do nothing here - viewer updates are handled on demand
18   emscripten_cancel_main_loop();
19 }
20
21 EMSCRIPTEN_KEEPALIVE int main()
22 {
23   Message::DefaultMessenger()->Printers().First()->SetTraceLevel (Message_Trace);
24   Handle(Message_PrinterSystemLog) aJSConsolePrinter = new Message_PrinterSystemLog ("webgl-sample", Message_Trace);
25   Message::DefaultMessenger()->AddPrinter (aJSConsolePrinter); // open JavaScript console within the Browser to see this output
26   Message::DefaultMessenger()->Send (TCollection_AsciiString("NbLogicalProcessors: ") + OSD_Parallel::NbLogicalProcessors(), Message_Trace);
27
28   // setup a dummy single-shot main loop callback just to shut up a useless Emscripten error message on calling eglSwapInterval()
29   emscripten_set_main_loop (onMainLoop, -1, 0);
30
31   WasmOcctView& aViewer = WasmOcctView::Instance();
32   aViewer.run();
33   Message::DefaultMessenger()->Send (OSD_MemInfo::PrintInfo(), Message_Trace);
34   return 0;
35 }