\section{efl\-\_\-thread\-\_\-1.\-c}

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

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

\textcolor{keyword}{static} pthread\_t thread\_id;

\textcolor{comment}{// BEGIN - code running in my custom pthread instance}
\textcolor{comment}{//}
\textcolor{keyword}{static} \textcolor{keywordtype}{void} *
my\_thread\_run(\textcolor{keywordtype}{void} *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} NULL;
\}
\textcolor{comment}{//}
\textcolor{comment}{// END - code running in my custom pthread instance}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
my\_thread\_new(\textcolor{keywordtype}{void})
\{
   pthread\_attr\_t attr;

   \textcolor{keywordflow}{if} (pthread\_attr\_init(&attr) != 0)
     perror(\textcolor{stringliteral}{"pthread\_attr\_init"});
   \textcolor{keywordflow}{if} (pthread\_create(&thread\_id, &attr, my\_thread\_run, NULL) != 0)
     perror(\textcolor{stringliteral}{"pthread\_create"});
\}

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);
   evas\_object\_resize(win, 400, 400);
   evas\_object\_show(win);

   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();

   elm_run();
   elm_shutdown();

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