aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui/examples/cpp-multithread/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/libui/examples/cpp-multithread/main.cpp')
-rw-r--r--src/libui_sdl/libui/examples/cpp-multithread/main.cpp92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/libui_sdl/libui/examples/cpp-multithread/main.cpp b/src/libui_sdl/libui/examples/cpp-multithread/main.cpp
deleted file mode 100644
index f97bc6f..0000000
--- a/src/libui_sdl/libui/examples/cpp-multithread/main.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-// 6 december 2015
-#include <thread>
-#include <chrono>
-#include <mutex>
-#include <condition_variable>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include "../../ui.h"
-using namespace std;
-
-uiMultilineEntry *e;
-condition_variable cv;
-mutex m;
-unique_lock<mutex> ourlock(m);
-thread *timeThread;
-
-void sayTime(void *data)
-{
- char *s = (char *) data;
-
- uiMultilineEntryAppend(e, s);
- delete s;
-}
-
-void threadproc(void)
-{
- ourlock.lock();
- while (cv.wait_for(ourlock, chrono::seconds(1)) == cv_status::timeout) {
- time_t t;
- char *base;
- char *s;
-
- t = time(NULL);
- base = ctime(&t);
- s = new char[strlen(base) + 1];
- strcpy(s, base);
- uiQueueMain(sayTime, s);
- }
-}
-
-int onClosing(uiWindow *w, void *data)
-{
- cv.notify_all();
- // C++ throws a hissy fit if you don't do this
- // we might as well, to ensure no uiQueueMain() gets in after uiQuit()
- timeThread->join();
- uiQuit();
- return 1;
-}
-
-void saySomething(uiButton *b, void *data)
-{
- uiMultilineEntryAppend(e, "Saying something\n");
-}
-
-int main(void)
-{
- uiInitOptions o;
- uiWindow *w;
- uiBox *b;
- uiButton *btn;
-
- memset(&o, 0, sizeof (uiInitOptions));
- if (uiInit(&o) != NULL)
- abort();
-
- w = uiNewWindow("Hello", 320, 240, 0);
- uiWindowSetMargined(w, 1);
-
- b = uiNewVerticalBox();
- uiBoxSetPadded(b, 1);
- uiWindowSetChild(w, uiControl(b));
-
- e = uiNewMultilineEntry();
- uiMultilineEntrySetReadOnly(e, 1);
-
- btn = uiNewButton("Say Something");
- uiButtonOnClicked(btn, saySomething, NULL);
- uiBoxAppend(b, uiControl(btn), 0);
-
- uiBoxAppend(b, uiControl(e), 1);
-
- // timeThread needs to lock ourlock itself - see http://stackoverflow.com/a/34121629/3408572
- ourlock.unlock();
- timeThread = new thread(threadproc);
-
- uiWindowOnClosing(w, onClosing, NULL);
- uiControlShow(uiControl(w));
- uiMain();
- return 0;
-}