#include <Elementary.h>
#include <pthread.h>
 
static Evas_Object *win = NULL;
static Evas_Object *rect = NULL;
 
struct info
{
   double x, y;
};
 
static void my_thread_mainloop_code(void *data);
 
static pthread_t thread_id;
static pthread_mutex_t th_lock;
static int th_exit = 0;
 
static void *
{
   double t = 0.0;
 
   
   for (;;)
     {
        struct info *inf = malloc(sizeof(struct info));
        int do_exit;
 
        if (inf)
          {
             inf->x = 200 + (200 * sin(t));
             inf->y = 200 + (200 * cos(t));
             
             
                (my_thread_mainloop_code, inf);
          }
        
        usleep(1000);
        t += 0.02;
        
        
        pthread_mutex_lock(&th_lock);
        do_exit = th_exit;
        pthread_mutex_unlock(&th_lock);
        if (do_exit) break;
     }
   return NULL;
}
 
static void
my_thread_new(void)
{
   pthread_attr_t attr;
 
   pthread_mutex_init(&th_lock, NULL);
   if (pthread_attr_init(&attr) != 0)
     perror("pthread_attr_init");
   if (pthread_create(&thread_id, &attr, my_thread_run, NULL) != 0)
     perror("pthread_create");
}
 
static void
my_thread_mainloop_code(void *data)
{
   struct info *inf = data;
   free(inf);
}
 
static void
{
   pthread_mutex_lock(&th_lock);
   th_exit = 1;
   pthread_mutex_unlock(&th_lock);
}
 
static void
{
   pthread_mutex_lock(&th_lock);
   th_exit = 1;
   pthread_mutex_unlock(&th_lock);
}
 
EAPI_MAIN int
{
   Evas_Object *o;
 
 
 
   
   
   rect = o;
 
   
   my_thread_new();
 
 
   pthread_mutex_lock(&th_lock);
   th_exit = 1;
   pthread_mutex_unlock(&th_lock);
 
   return 0;
}
@ EVAS_CALLBACK_MOUSE_DOWN
Mouse Button Down Event.
Definition Evas_Common.h:422
 
EAPI void ecore_main_loop_thread_safe_call_async(Ecore_Cb callback, void *data)
Calls callback asynchronously in the main loop.
Definition ecore.c:612
 
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339
 
#define ELM_MAIN()
macro to be used after the elm_main() function
Definition elm_general.h:556
 
Eina_Bool elm_policy_set(unsigned int policy, int value)
Set a new policy's value (for a given policy group/identifier).
Definition elm_main.c:1380
 
void elm_exit(void)
Ask to exit Elementary's main loop.
Definition elm_main.c:1373
 
void elm_run(void)
Run Elementary's main loop.
Definition elm_main.c:1357
 
@ ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
quit when the application's last window is closed
Definition elm_general.h:248
 
@ ELM_POLICY_QUIT
under which circumstances the application should quit automatically.
Definition elm_general.h:227
 
Evas_Object * elm_win_util_standard_add(const char *name, const char *title)
Adds a window object with standard setup.
Definition efl_ui_win.c:9587
 
EVAS_API void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition evas_object_main.c:1814
 
EVAS_API void evas_object_del(Evas_Object *obj)
Marks the given Evas object for deletion (when Evas will free its memory).
Definition evas_object_main.c:928
 
EVAS_API void evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
Sets the general/main color of the given Evas object to the given one.
Definition evas_object_main.c:2024
 
EVAS_API void evas_object_event_callback_add(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
Add (register) a callback function to a given Evas object event.
Definition evas_callbacks.c:478
 
EVAS_API void evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
Move the given Evas object to the given location inside its canvas' viewport.
Definition evas_object_main.c:1171
 
EVAS_API Evas * evas_object_evas_get(const Eo *eo_obj)
Get the Evas to which this object belongs to.
Definition evas_object_main.c:2662
 
EVAS_API void evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
Changes the size of the given Evas object.
Definition evas_object_main.c:1236
 
EVAS_API Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition evas_object_rectangle.c:78
 
EVAS_API void evas_object_smart_callback_add(Evas_Object *eo_obj, const char *event, Evas_Smart_Cb func, const void *data)
Add (register) a callback function to the smart event specified by event on the smart object obj.
Definition evas_object_smart.c:1040