\section{efl\+\_\+thread\+\_\+win32\+\_\+1.\+c}

\begin{DoxyCodeInclude}
\textcolor{comment}{//Compile with:}
\textcolor{comment}{//gcc -o efl\_thread\_1 efl\_thread\_win32\_1.c -g `pkg-config --cflags --libs elementary`}
\textcolor{preprocessor}{#include <Elementary.h>}
\textcolor{preprocessor}{#define WIN32\_LEAN\_AND\_MEAN}
\textcolor{preprocessor}{#include <windows.h>}

\textcolor{keyword}{static} Evas\_Object *win = NULL;
\textcolor{keyword}{static} Evas\_Object *rect = NULL;

\textcolor{keyword}{static} HANDLE thread;

\textcolor{comment}{// BEGIN - code running in my custom win32 thread instance}
\textcolor{comment}{//}
\textcolor{keyword}{static} DWORD WINAPI
my\_thread\_run(LPVOID arg)
\{
   \textcolor{keywordtype}{double} t = 0.0;

   \textcolor{keywordflow}{for} (;;)
     \{
        ecore\_thread\_main\_loop\_begin(); \textcolor{comment}{// begin critical}
          \{ \textcolor{comment}{// indented for illustration of "critical" block}
             Evas\_Coord x, y;

             x = 200 + (200 * sin(t));
             y = 200 + (200 * cos(t));
             evas\_object\_move(rect, x - 50, y - 50);
          \}
        ecore\_thread\_main\_loop\_end(); \textcolor{comment}{// end critical}
        usleep(1000);
        t += 0.02;
     \}
   \textcolor{keywordflow}{return} 0;
\}
\textcolor{comment}{//}
\textcolor{comment}{// END - code running in my custom win32 thread instance}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
my\_thread\_new(\textcolor{keywordtype}{void})
\{
   thread = CreateThread(NULL, 0, my\_thread\_run, NULL, 0, NULL);
   \textcolor{keywordflow}{if} (!thread)
     \{
        \textcolor{keywordtype}{char} *str = evil\_last\_error\_get();
        \textcolor{keywordflow}{if} (str)
          \{
             fprintf(\textcolor{stringliteral}{"thread creation failed: %s\(\backslash\)n"}, str);
             free(str);
          \}
     \}
\}

EAPI\_MAIN \textcolor{keywordtype}{int}
elm\_main(\textcolor{keywordtype}{int} argc, \textcolor{keywordtype}{char} **argv)
\{
   Evas\_Object *o;

   elm_policy_set(ELM\_POLICY\_QUIT, ELM\_POLICY\_QUIT\_LAST\_WINDOW\_CLOSED);

   win = elm_win_util_standard_add(\textcolor{stringliteral}{"efl-thread-1"}, \textcolor{stringliteral}{"EFL Thread 1"});
   elm\_win\_autodel\_set(win, EINA\_TRUE);

   o = evas\_object\_rectangle\_add(evas\_object\_evas\_get(win));
   evas\_object\_color\_set(o, 50, 80, 180, 255);
   evas\_object\_resize(o, 100, 100);
   evas\_object\_show(o);
   rect = o;

   \textcolor{comment}{// create custom thread to do some "work on the side"}
   my\_thread\_new();

   evas\_object\_resize(win, 400, 400);
   evas\_object\_show(win);

   elm_run();

   \textcolor{keywordflow}{return} 0;
\}
ELM_MAIN()
\end{DoxyCodeInclude}
 