\hypertarget{ecore_thread_example_8c-example}{}\doxysection{ecore\+\_\+thread\+\_\+example.\+c}

\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{/*}}
\DoxyCodeLine{\textcolor{comment}{\ *\ gcc\ -\/o\ ecore\_thread\_example\ ecore\_thread\_example.c\ `pkg-\/config\ -\/-\/cflags\ -\/-\/libs\ ecore\ eina`}}
\DoxyCodeLine{\textcolor{comment}{\ */}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <stdio.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <stdlib.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <unistd.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <Ecore.h>}}
\DoxyCodeLine{\textcolor{preprocessor}{\#include\ <Ecore\_Getopt.h>}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct}}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ \ *thread\_3;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ \ \ msgs\_received;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ \ \ \ \ max\_msgs;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Lock__Group_ga324ec512f8bd7a5f391239382f09d5c9}{Eina\_Lock}}\ \ \ \ \ \ mutex;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Lock__Group_ga511a6a76008a30eead37d599b071dff9}{Eina\_Condition}}\ condition;}
\DoxyCodeLine{\}\ App\_Data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct}}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ *list;}
\DoxyCodeLine{\}\ Thread\_Data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct}}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ *name;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ \ \ \ \ *base;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Lock__Group_ga324ec512f8bd7a5f391239382f09d5c9}{Eina\_Lock}}\ mutex;}
\DoxyCodeLine{\}\ Feedback\_Thread\_Data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{typedef}\ \textcolor{keyword}{struct}}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ \ \ \ \ \ \ \ all\_done;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ *list;}
\DoxyCodeLine{\}\ App\_Msg;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_local\_data\_free(\textcolor{keywordtype}{void}\ *data)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ Thread\_Data\ *td\ =\ data;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ *str;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\_LIST\_FREE}}(td-\/>list,\ str)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}Freeing\ string:\ \%s\(\backslash\)n"{}},\ str);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ free(str);}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ free(td);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_short\_job(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ Thread\_Data\ *td;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ i;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ td\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_gaa99c30f01228217ddd0e510e4e99610b}{ecore\_thread\_local\_data\_find}}(th,\ \textcolor{stringliteral}{"{}data"{}});}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!td)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ td\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(Thread\_Data));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!td)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_gae9b9b20e1ed53c62c51617b55aed2511}{ecore\_thread\_cancel}}(th);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga6878f550a9bcc8002c0c709b4b4dca66}{ecore\_thread\_local\_data\_add}}(th,\ \textcolor{stringliteral}{"{}data"{}},\ td,\ \_local\_data\_free,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{for}\ (i\ =\ 0;\ i\ <\ 10;\ i++)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ buf[200];}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group__Ecore__Thread__Group_ga792471a7ed00718b71d58b791ddbd08d}{ecore\_thread\_check}}(th))}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_gad3c1d51a24772b885b26486be86c2779}{ecore\_thread\_local\_data\_del}}(th,\ \textcolor{stringliteral}{"{}data"{}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ snprintf(buf,\ \textcolor{keyword}{sizeof}(buf),\ \textcolor{stringliteral}{"{}Thread\ \%p:\ String\ number\ \%d"{}},\ th,\ i);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ td-\/>list\ =\ \mbox{\hyperlink{group__Eina__List__Group_ga625698a383dda8fc0db245a1c7608c49}{eina\_list\_append}}(td-\/>list,\ strdup(buf));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ sleep(1);}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_feedback\_job(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ time\_t\ t;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ i,\ count;}
\DoxyCodeLine{\ \ \ Feedback\_Thread\_Data\ *ftd\ =\ NULL;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{struct__Eina__Iterator}{Eina\_Iterator}}\ *it;}
\DoxyCodeLine{\ \ \ App\_Msg\ *msg;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ *name;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ count\ =\ (int)(uintptr\_t)\mbox{\hyperlink{group__Ecore__Thread__Group_ga0eea48ec2cec77087c3f246347f26909}{ecore\_thread\_global\_data\_find}}(\textcolor{stringliteral}{"{}count"{}});}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{for}\ (i\ =\ 0;\ i\ <\ count;\ i++)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ buf[32];}
\DoxyCodeLine{\ \ \ \ \ \ \ \ snprintf(buf,\ \textcolor{keyword}{sizeof}(buf),\ \textcolor{stringliteral}{"{}data\%d"{}},\ i);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0eea48ec2cec77087c3f246347f26909}{ecore\_thread\_global\_data\_find}}(buf);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!ftd)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (eina\_lock\_take\_try(\&ftd-\/>mutex))}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{else}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ ftd\ =\ NULL;}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!ftd)}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keywordflow}{return};}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ it\ =\ \mbox{\hyperlink{group__Eina__File__Group_gab744fcd8eb2369fed66520ff82930650}{eina\_file\_ls}}(ftd-\/>base);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!it)}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keywordflow}{goto}\ the\_end;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ msg\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(App\_Msg));}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ t\ =\ time(NULL);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(it,\ name)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (time(NULL)\ >=\ (t\ +\ 2))}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Stringshare__Group_ga5538b4a134987b8a01744fad1a845ba4}{eina\_stringshare\_del}}(name);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group__Eina__Stringshare__Group_ga8c4fd1a1b3edb40eca0ef80bb41c58bd}{eina\_stringshare\_strlen}}(name)\ >=\ 10)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ msg-\/>list\ =\ \mbox{\hyperlink{group__Eina__List__Group_ga625698a383dda8fc0db245a1c7608c49}{eina\_list\_append}}(msg-\/>list,\ strdup(name));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Stringshare__Group_ga5538b4a134987b8a01744fad1a845ba4}{eina\_stringshare\_del}}(name);}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Iterator__Group_ga50da005e8d26c0a043d0d1c025bc9008}{eina\_iterator\_free}}(it);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga8fadd19caae011ab1483665f09ce4d91}{ecore\_thread\_feedback}}(th,\ msg);}
\DoxyCodeLine{}
\DoxyCodeLine{the\_end:}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga8e53feb974331550744cbc2e40dc9132}{ecore\_thread\_global\_data\_del}}(ftd-\/>name);}
\DoxyCodeLine{\ \ \ free(ftd-\/>name);}
\DoxyCodeLine{\ \ \ free(ftd-\/>base);}
\DoxyCodeLine{\ \ \ eina\_lock\_release(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ eina\_lock\_free(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ free(ftd);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_gadf825c1a58f06bba2a304d025bed3185}{ecore\_thread\_reschedule}}(th);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_out\_of\_pool\_job(\textcolor{keywordtype}{void}\ *data,\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ App\_Data\ *ad\ =\ data;}
\DoxyCodeLine{\ \ \ App\_Msg\ *msg;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{while}\ (1)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ msgs;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ eina\_condition\_wait(\&ad-\/>condition);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ msgs\ =\ ad-\/>msgs\_received;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ eina\_lock\_release(\&ad-\/>mutex);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (msgs\ ==\ ad-\/>max\_msgs)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ msg\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(App\_Msg));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ msg-\/>all\_done\ =\ 1;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga8fadd19caae011ab1483665f09ce4d91}{ecore\_thread\_feedback}}(th,\ msg);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_print\_status(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ active,\ pending\_total,\ pending\_feedback,\ pending\_short,\ available;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ active\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_gad7a28588dc26d6af8b6db8abc3ef37ce}{ecore\_thread\_active\_get}}();}
\DoxyCodeLine{\ \ \ pending\_total\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_gaeaa014287d578a200d41cca861bceac3}{ecore\_thread\_pending\_total\_get}}();}
\DoxyCodeLine{\ \ \ pending\_feedback\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_gaa5c56445198f7b03c1f080039499689a}{ecore\_thread\_pending\_feedback\_get}}();}
\DoxyCodeLine{\ \ \ pending\_short\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga3e32f650cfe811e69bba7825c71b9070}{ecore\_thread\_pending\_get}}();}
\DoxyCodeLine{\ \ \ available\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga6e7703b3013d9c872449f6e2ec093b53}{ecore\_thread\_available\_get}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Status:\(\backslash\)n\(\backslash\)t*\ Active\ threads:\ \%d\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\(\backslash\)t*\ Available\ threads:\ \%d\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\(\backslash\)t*\ Pending\ short\ jobs:\ \%d\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\(\backslash\)t*\ Pending\ feedback\ jobs:\ \%d\(\backslash\)n"{}}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\(\backslash\)t*\ Pending\ total:\ \%d\(\backslash\)n"{}},\ active,\ available,\ pending\_short,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ pending\_feedback,\ pending\_total);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_feedback\_job\_msg\_cb(\textcolor{keywordtype}{void}\ *data,\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th,\ \textcolor{keywordtype}{void}\ *msg\_data)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ App\_Data\ *ad\ =\ data;}
\DoxyCodeLine{\ \ \ App\_Msg\ *msg\ =\ msg\_data;}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{char}\ *str;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (msg-\/>all\_done)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga95cf8e97dff0716433c2c5474d606a98}{ecore\_main\_loop\_quit}}();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ free(msg);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \_print\_status();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!msg-\/>list)}
\DoxyCodeLine{\ \ \ \ \ printf(\textcolor{stringliteral}{"{}Received\ an\ empty\ list\ from\ thread\ \%p\(\backslash\)n"{}},\ th);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{else}}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ i\ =\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}Received\ \%d\ elements\ from\ threads\ \%p\ (printing\ first\ 5):\(\backslash\)n"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ eina\_list\_count(msg-\/>list),\ th);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\_LIST\_FREE}}(msg-\/>list,\ str)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (i\ <=\ 5)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}\(\backslash\)t\%s\(\backslash\)n"{}},\ str);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ free(str);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ i++;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ eina\_lock\_take(\&ad-\/>mutex);}
\DoxyCodeLine{\ \ \ ad-\/>msgs\_received++;}
\DoxyCodeLine{\ \ \ eina\_condition\_signal(\&ad-\/>condition);}
\DoxyCodeLine{\ \ \ eina\_lock\_release(\&ad-\/>mutex);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ free(msg);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_thread\_end\_cb(\textcolor{keywordtype}{void}\ *data,\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ App\_Data\ *ad\ =\ data;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Normal\ termination\ for\ thread\ \%p.\(\backslash\)n"{}},\ th);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (th\ ==\ ad-\/>thread\_3)}
\DoxyCodeLine{\ \ \ \ \ ad-\/>thread\_3\ =\ NULL;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_thread\_cancel\_cb(\textcolor{keywordtype}{void}\ *data,\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga0c2e1f8d562ccf80ecc0009ada72496f}{Ecore\_Thread}}\ *th)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ App\_Data\ *ad\ =\ data;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Thread\ \%p\ got\ cancelled.\(\backslash\)n"{}},\ th);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (th\ ==\ ad-\/>thread\_3)}
\DoxyCodeLine{\ \ \ \ \ ad-\/>thread\_3\ =\ NULL;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_cancel\_timer\_cb(\textcolor{keywordtype}{void}\ *data)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ App\_Data\ *ad\ =\ data;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (ad-\/>thread\_3\ \&\&\ !\mbox{\hyperlink{group__Ecore__Thread__Group_ga792471a7ed00718b71d58b791ddbd08d}{ecore\_thread\_check}}(ad-\/>thread\_3))}
\DoxyCodeLine{\ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_gae9b9b20e1ed53c62c51617b55aed2511}{ecore\_thread\_cancel}}(ad-\/>thread\_3);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_status\_timer\_cb(\textcolor{keywordtype}{void}\ *data\ \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \_print\_status();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keyword}{const}\ \mbox{\hyperlink{struct__Ecore__Getopt}{Ecore\_Getopt}}\ optdesc\ =\ \{}
\DoxyCodeLine{\ \ \ \textcolor{stringliteral}{"{}ecore\_thread\_example"{}},}
\DoxyCodeLine{\ \ \ NULL,}
\DoxyCodeLine{\ \ \ \textcolor{stringliteral}{"{}0.0"{}},}
\DoxyCodeLine{\ \ \ \textcolor{stringliteral}{"{}(C)\ 2011\ Enlightenment"{}},}
\DoxyCodeLine{\ \ \ \textcolor{stringliteral}{"{}Public\ domain?"{}},}
\DoxyCodeLine{\ \ \ \textcolor{stringliteral}{"{}Example\ program\ for\ Ecore\_Thread"{}},}
\DoxyCodeLine{\ \ \ 0,}
\DoxyCodeLine{\ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_gae2ee4724bff2a0cf9acdbdbb74351745}{ECORE\_GETOPT\_STORE\_INT}}(\textcolor{charliteral}{'t'},\ \textcolor{stringliteral}{"{}threads"{}},\ \textcolor{stringliteral}{"{}Max\ number\ of\ threads\ to\ run"{}}),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_gae2ee4724bff2a0cf9acdbdbb74351745}{ECORE\_GETOPT\_STORE\_INT}}(\textcolor{charliteral}{'m'},\ \textcolor{stringliteral}{"{}msgs"{}},\ \textcolor{stringliteral}{"{}Max\ number\ of\ messages\ to\ receive"{}}),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga74964c89c7676b39623ea3759dbcc39c}{ECORE\_GETOPT\_APPEND\_METAVAR}}(\textcolor{charliteral}{'p'},\ \textcolor{stringliteral}{"{}path"{}},\ \textcolor{stringliteral}{"{}Add\ path\ for\ feedback\ job"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}STRING"{}},\ \mbox{\hyperlink{group__Ecore__Getopt__Group_ggad117da080da25f6a67b500d94d0f6636a395a02cca379ddcf1f55cc539c134515}{ECORE\_GETOPT\_TYPE\_STR}}),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_gad7e09a56d2881f22d69dff005e38b67d}{ECORE\_GETOPT\_HELP}}(\textcolor{charliteral}{'h'},\ \textcolor{stringliteral}{"{}help"{}}),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_gaf652ac6007cd9674df603fa3dacc59e0}{ECORE\_GETOPT\_SENTINEL}}}
\DoxyCodeLine{\ \ \ \}}
\DoxyCodeLine{\};}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int}}
\DoxyCodeLine{main(\textcolor{keywordtype}{int}\ argc,\ \textcolor{keywordtype}{char}\ *argv[])}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keywordtype}{int}\ i,\ max\_threads\ =\ 0,\ max\_msgs\ =\ 0;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ opt\_quit\ =\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{struct__Eina__List}{Eina\_List}}\ *path\_list\ =\ NULL;}
\DoxyCodeLine{\ \ \ App\_Data\ appdata;}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{union__Ecore__Getopt__Value}{Ecore\_Getopt\_Value}}\ values[]\ =\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga048498f4546a0dd78c541168db62494e}{ECORE\_GETOPT\_VALUE\_INT}}(max\_threads),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga048498f4546a0dd78c541168db62494e}{ECORE\_GETOPT\_VALUE\_INT}}(max\_msgs),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga0ad194cc9e30633ee01068ed4cc72edc}{ECORE\_GETOPT\_VALUE\_LIST}}(path\_list),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga832f91eecd39de313b8351305cba80d3}{ECORE\_GETOPT\_VALUE\_BOOL}}(opt\_quit),}
\DoxyCodeLine{\ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Getopt__Group_ga0440d57be0af2a77dc5de02be19aeae2}{ECORE\_GETOPT\_VALUE\_NONE}}}
\DoxyCodeLine{\ \ \ \};}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Init__Group_ga77757609684a2c922dc5ec398274751b}{ecore\_init}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ i\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_gabad7972818b7fb1346ae7a098cd47220}{ecore\_thread\_max\_get}}();}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}Initial\ max\ threads:\ \%d\(\backslash\)n"{}},\ i);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ memset(\&appdata,\ 0,\ \textcolor{keyword}{sizeof}(App\_Data));}
\DoxyCodeLine{\ \ \ appdata.max\_msgs\ =\ 1;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (\mbox{\hyperlink{group__Ecore__Getopt__Group_gab9fb5bf2f2edd9bd3a3519faa8e3ebfa}{ecore\_getopt\_parse}}(\&optdesc,\ values,\ argc,\ argv)\ <\ 0)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}Argument\ parsing\ failed\(\backslash\)n"{}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 1;}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (opt\_quit)}
\DoxyCodeLine{\ \ \ \ \ \textcolor{keywordflow}{return}\ 0;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (max\_threads)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_gaaf965a46e0cc12857883806812af7693}{ecore\_thread\_max\_set}}(max\_threads);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ printf(\textcolor{stringliteral}{"{}Max\ threads:\ \%d\(\backslash\)n"{}},\ \mbox{\hyperlink{group__Ecore__Thread__Group_gabad7972818b7fb1346ae7a098cd47220}{ecore\_thread\_max\_get}}());}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (max\_msgs)}
\DoxyCodeLine{\ \ \ \ \ appdata.max\_msgs\ =\ max\_msgs;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!path\_list)}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ Feedback\_Thread\_Data\ *ftd;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(\textcolor{stringliteral}{"{}count"{}},\ (\textcolor{keywordtype}{void}\ *)3,\ NULL,\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(Feedback\_Thread\_Data));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>name\ =\ strdup(\textcolor{stringliteral}{"{}data0"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#ifdef\ \_WIN32}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}c:/windows/System32"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}/usr/bin"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ eina\_lock\_new(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(ftd-\/>name,\ ftd,\ NULL,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(Feedback\_Thread\_Data));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>name\ =\ strdup(\textcolor{stringliteral}{"{}data1"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#ifdef\ \_WIN32}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}c:/windows/Fonts"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}/usr/lib"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ eina\_lock\_new(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(ftd-\/>name,\ ftd,\ NULL,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(Feedback\_Thread\_Data));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>name\ =\ strdup(\textcolor{stringliteral}{"{}data2"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#ifdef\ \_WIN32}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}c:/windows/Help"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(\textcolor{stringliteral}{"{}/usr/lib"{}});}
\DoxyCodeLine{\textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ eina\_lock\_new(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(ftd-\/>name,\ ftd,\ NULL,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{else}}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ Feedback\_Thread\_Data\ *ftd;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ *str;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(\textcolor{stringliteral}{"{}count"{}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\textcolor{keywordtype}{void}\ *)(uintptr\_t)eina\_list\_count(path\_list),\ NULL,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ i\ =\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\_LIST\_FREE}}(path\_list,\ str)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{char}\ buf[32];}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ snprintf(buf,\ \textcolor{keyword}{sizeof}(buf),\ \textcolor{stringliteral}{"{}data\%d"{}},\ i);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ ftd\ =\ calloc(1,\ \textcolor{keyword}{sizeof}(Feedback\_Thread\_Data));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ ftd-\/>name\ =\ strdup(buf);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ ftd-\/>base\ =\ strdup(str);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ eina\_lock\_new(\&ftd-\/>mutex);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga4e9de7492f8400e19ddd157d8cc21811}{ecore\_thread\_global\_data\_add}}(ftd-\/>name,\ ftd,\ NULL,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ free(str);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ i++;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ eina\_lock\_new(\&appdata.mutex);}
\DoxyCodeLine{\ \ \ eina\_condition\_new(\&appdata.condition,\ \&appdata.mutex);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\_thread\_feedback\_run}}(\_out\_of\_pool\_job,\ \_feedback\_job\_msg\_cb,\ NULL,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ NULL,\ \&appdata,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga6857d9e5bd717ae3d8417b39ec585c3f}{ecore\_thread\_run}}(\_short\_job,\ \_thread\_end\_cb,\ \_thread\_cancel\_cb,\ \&appdata);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\_thread\_feedback\_run}}(\_feedback\_job,\ \_feedback\_job\_msg\_cb,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_thread\_end\_cb,\ \_thread\_cancel\_cb,\ \&appdata,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\ \ \ appdata.thread\_3\ =\ \mbox{\hyperlink{group__Ecore__Thread__Group_ga6857d9e5bd717ae3d8417b39ec585c3f}{ecore\_thread\_run}}(\_short\_job,\ \_thread\_end\_cb,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_thread\_cancel\_cb,\ \&appdata);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Thread__Group_ga941fa6f0313a6fe551f5d80e2a012bba}{ecore\_thread\_feedback\_run}}(\_feedback\_job,\ \_feedback\_job\_msg\_cb,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \_thread\_end\_cb,\ \_thread\_cancel\_cb,\ \&appdata,}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Timer__Group_ga926423e464d7ef71105dd822d90e1187}{ecore\_timer\_add}}(1.0,\ \_cancel\_timer\_cb,\ \&appdata);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Timer__Group_ga926423e464d7ef71105dd822d90e1187}{ecore\_timer\_add}}(2.0,\ \_status\_timer\_cb,\ NULL);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \_print\_status();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ eina\_condition\_free(\&appdata.condition);}
\DoxyCodeLine{\ \ \ eina\_lock\_free(\&appdata.mutex);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Init__Group_ga768298b932f18d7e7593a447493e5cde}{ecore\_shutdown}}();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ 0;}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 