void good_bye(void *data, Evas_Object *o, const char *emission, const char *source) { if(edje_object_signal_callback_del(edje,emission,source,good_bye)) ecore_evas_shutdown(); ecore_shutdown(); } cb_elpanel_down_under(void *data, Evas *evas, Evas_Object *obj, void *event_info){ //Control that the libraries are properly initialized if (!ecore_init()) return EXIT_FAILURE; if (!ecore_evas_init()) return EXIT_FAILURE; if (!edje_init()) return EXIT_FAILURE; //Check the canvas wrapper (800x600 X11 window) is created correctly ecore_evas = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 800, 600); if (!ecore_evas) return EXIT_FAILURE; //We set some window attributes and make the wrapper visible ecore_evas_title_set(ecore_evas, "Example Application"); ecore_evas_name_class_set(ecore_evas, "testapp", "Testapp"); ecore_evas_show(ecore_evas); //Get the pointer to the canvas and add tan object evas = ecore_evas_get(ecore_evas); edje = edje_object_add(evas); edje_object_file_set(edje, "/home/PrinceAMD/C/testfile.edj", "testgroup"); //Setting the object and canvas to the minimal size of the object evas_object_move(edje, 0, 0); edje_object_size_min_get(edje, &width, &height); evas_object_resize(edje, width, height); ecore_evas_resize(ecore_evas, width, height); evas_object_show(edje); //Add the handler for the exit signal before starting the loop edje_object_signal_callback_add(edje, "closeme!", "arbitrary_source", good_bye, "data"); }