From: <enl...@li...> - 2004-07-15 09:44:48
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation Log Message: Directory /cvsroot/enlightenment/e17/apps/elation added to the repository |
From: <enl...@li...> - 2004-07-15 09:45:11
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/data Log Message: Directory /cvsroot/enlightenment/e17/apps/elation/data added to the repository |
From: <enl...@li...> - 2004-07-15 09:45:11
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/m4 Log Message: Directory /cvsroot/enlightenment/e17/apps/elation/m4 added to the repository |
From: <enl...@li...> - 2004-07-15 09:45:12
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src Log Message: Directory /cvsroot/enlightenment/e17/apps/elation/src added to the repository |
From: <enl...@li...> - 2004-07-15 09:46:04
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/bin Log Message: Directory /cvsroot/enlightenment/e17/apps/elation/src/bin added to the repository |
From: <enl...@li...> - 2004-07-15 09:46:05
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Log Message: Directory /cvsroot/enlightenment/e17/apps/elation/src/modules added to the repository |
From: <enl...@li...> - 2004-07-15 09:47:07
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation Added Files: AUTHORS COPYING COPYING-PLAIN ChangeLog INSTALL Makefile.am NEWS README autogen.sh configure.in elation.spec Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-15 09:47:07
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/data Added Files: Makefile.am Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-15 09:47:07
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/m4 Added Files: ac_expand_dir.m4 ac_path_generic.m4 Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-15 09:47:08
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/bin Added Files: Elation.h Makefile.am elation_main.c elation_module.c Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-15 09:47:08
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Added Files: Makefile.am elation_dvd.c elation_menu.c Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-15 09:47:08
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src Added Files: Makefile.am Log Message: elation in cvs... claiming namespace... :) |
From: <enl...@li...> - 2004-07-18 08:04:27
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/bin Modified Files: Elation.h elation_main.c elation_module.c Log Message: actually works as a dvd player.. now xine is screwed when it comes to ejecting.. i cant shutdown the xine subsytem - it freezes inside a xine call. all say YAY to threads! grrrr. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/Elation.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Elation.h 15 Jul 2004 09:47:00 -0000 1.1 +++ Elation.h 18 Jul 2004 08:04:21 -0000 1.2 @@ -47,7 +47,19 @@ ELATION_ACT_NEXT, ELATION_ACT_PREV, ELATION_ACT_SELECT, - ELATION_ACT_EXIT + ELATION_ACT_EXIT, + ELATION_ACT_UP, + ELATION_ACT_DOWN, + ELATION_ACT_LEFT, + ELATION_ACT_RIGHT, + ELATION_ACT_MENU, + ELATION_ACT_INFO, + ELATION_ACT_INPUT, + ELATION_ACT_PLAY, + ELATION_ACT_PAUSE, + ELATION_ACT_STOP, + ELATION_ACT_REC, + ELATION_ACT_SKIP }; Elation_Module *elation_module_open(Elation_Info *info, Elation_Module *parent, char *name); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/elation_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_main.c 15 Jul 2004 09:47:00 -0000 1.1 +++ elation_main.c 18 Jul 2004 08:04:21 -0000 1.2 @@ -35,6 +35,7 @@ main_start(int argc, char **argv) { int mode = 0; + int fullscreen = 0; if (!ecore_init()) return -1; ecore_app_args_set(argc, (const char **)argv); @@ -63,18 +64,28 @@ } i++; } - else if (!strcmp(argv[i], "-gl")) + else if ((!strcmp(argv[i], "-gl")) || + (!strcmp(argv[i], "-opengl")) || + (!strcmp(argv[i], "--opengl"))) { mode = 1; } - else if (!strcmp(argv[i], "-fb")) + else if ((!strcmp(argv[i], "-fb")) || + (!strcmp(argv[i], "-framebuffer")) || + (!strcmp(argv[i], "--framebuffer"))) { mode = 2; } + else if ((!strcmp(argv[i], "-f")) || + (!strcmp(argv[i], "-fullscreen")) || + (!strcmp(argv[i], "--fullscreen"))) + { + fullscreen = 1; + } } } if (mode == 0) - ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, startw, starth); + ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, startw, starth); else if (mode == 1) ecore_evas = ecore_evas_gl_x11_new(NULL, 0, 0, 0, startw, starth); else if (mode == 2) @@ -85,10 +96,12 @@ ecore_evas = ecore_evas_fb_new(NULL, 270, startw, starth); #endif if (!ecore_evas) return -1; + ecore_evas_title_set(ecore_evas, "Elation Media Manager"); + ecore_evas_name_class_set(ecore_evas, "elation", "Elation"); + if (fullscreen) ecore_evas_fullscreen_set(ecore_evas, 1); ecore_evas_callback_delete_request_set(ecore_evas, main_delete_request); ecore_evas_callback_resize_set(ecore_evas, main_resize); - ecore_evas_title_set(ecore_evas, "Elation"); - ecore_evas_name_class_set(ecore_evas, "elation", "main"); + ecore_evas_cursor_set(ecore_evas, "", 99999, 0, 0); ecore_evas_show(ecore_evas); evas = ecore_evas_get(ecore_evas); evas_image_cache_set(evas, 8 * 1024 * 1024); @@ -140,14 +153,17 @@ bg_setup(void) { Evas_Object *o; + Evas_Coord w, h; o = edje_object_add(evas); o_bg = o; edje_object_file_set(o, PACKAGE_DATA_DIR"/data/theme.eet", "background"); evas_object_move(o, 0, 0); - evas_object_resize(o, startw, starth); evas_object_layer_set(o, -999); evas_object_show(o); + + evas_output_viewport_get(evas, NULL, NULL, &w, &h); + bg_resize(w, h); } void @@ -162,14 +178,17 @@ menu_setup(void) { Elation_Module *em; + Evas_Coord w, h; - em = elation_module_open(&elation_info, NULL, "menu"); + em = elation_module_open(&elation_info, NULL, "dvd"); em_menu = em; if (em) { em->show(em); em->focus(em); } + evas_output_viewport_get(evas, NULL, NULL, &w, &h); + menu_resize(w, h); } void =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/elation_module.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_module.c 15 Jul 2004 09:47:00 -0000 1.1 +++ elation_module.c 18 Jul 2004 08:04:21 -0000 1.2 @@ -10,12 +10,19 @@ void *handle; char buf[4096]; - snprintf(buf, sizeof(buf), "%s/%s.so", PACKAGE_LIB_DIR"/elation", name); + snprintf(buf, sizeof(buf), "%s/elation_%s.so", PACKAGE_LIB_DIR"/elation", name); handle = dlopen(buf, RTLD_NOW | RTLD_LOCAL); - if (!handle) return NULL; + if (!handle) + { + printf("ERROR loading: %s\n" + "ERROR:\n" + "%s\n", buf, dlerror()); + return NULL; + } init = dlsym(handle, "init"); if (!init) { + printf("no init!\n"); dlclose(handle); return NULL; } |
From: <enl...@li...> - 2004-07-18 08:04:28
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: Makefile.am elation_dvd.c Log Message: actually works as a dvd player.. now xine is screwed when it comes to ejecting.. i cant shutdown the xine subsytem - it freezes inside a xine call. all say YAY to threads! grrrr. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 15 Jul 2004 09:47:01 -0000 1.1 +++ Makefile.am 18 Jul 2004 08:04:21 -0000 1.2 @@ -6,9 +6,7 @@ pkgdir = $(libdir)/elation -pkg_LTLIBRARIES = elation_menu.la - -# elation_dvd.la +pkg_LTLIBRARIES = elation_menu.la elation_dvd.la elation_menu_la_SOURCES = elation_menu.c elation_menu_la_LIBADD = @my_libs@ @@ -16,6 +14,6 @@ elation_menu_la_DEPENDENCIES = $(top_builddir)/config.h elation_dvd_la_SOURCES = elation_dvd.c -elation_dvd_la_LIBADD = @my_libs@ +elation_dvd_la_LIBADD = @my_libs@ -ldvdnav elation_dvd_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version elation_dvd_la_DEPENDENCIES = $(top_builddir)/config.h =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_dvd.c 15 Jul 2004 09:47:01 -0000 1.1 +++ elation_dvd.c 18 Jul 2004 08:04:21 -0000 1.2 @@ -3,57 +3,95 @@ #include <dvdnav/dvdnav.h> #include <dvdnav/nav_read.h> +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <sys/ioctl.h> +#include <linux/cdrom.h> + /* external module symbols. the rest is private */ void *init(Elation_Module *em); +/********************/ typedef struct _Elation_Module_Private Elation_Module_Private; struct _Elation_Module_Private { + Evas_Object *overlay; + Evas_Object *background1; + Evas_Object *background2; Evas_Object *video; + + Ecore_Timer *media_check_timer; + Ecore_Timer *media_play_timer; + double media_fade_in_start; + Ecore_Timer *media_fade_in_timer; + + unsigned char have_media : 1; + unsigned char check_media_done : 1; + unsigned char menu_visible : 1; }; static void shutdown(Elation_Module *em); static void resize(Elation_Module *em); -static void hide(Elation_Module *em); static void show(Elation_Module *em); +static void hide(Elation_Module *em); +static void focus(Elation_Module *em); +static void unfocus(Elation_Module *em); +static void action(Elation_Module *em, int action); static void frame_decode_cb(void *data, Evas_Object *obj, void *event_info); static void frame_resize_cb(void *data, Evas_Object *obj, void *event_info); static void length_change_cb(void *data, Evas_Object *obj, void *event_info); +static void decode_stop_cb(void *data, Evas_Object *obj, void *event_info); +static void button_num_change_cb(void *data, Evas_Object *obj, void *event_info); +static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static int media_check_timer_cb(void *data); +static int media_play_timer_cb(void *data); +static int media_fade_in_timer_cb(void *data); void * init(Elation_Module *em) { - Elation_Module *em; Elation_Module_Private *pr; - Evas_Coord w, h; - em = calloc(1, sizeof(Elation_Module)); - if (!em) return NULL; - em->info = ei; pr = calloc(1, sizeof(Elation_Module_Private)); - if (!pr) - { - free(em); - return NULL; - } - em->data = pr; + if (!pr) return NULL; + + /* set up module methods */ + em->shutdown = shutdown; + em->resize = resize; + em->show = show; + em->hide = hide; + em->focus = focus; + em->unfocus = unfocus; + em->action = action; + + pr->background1 = evas_object_rectangle_add(em->info->evas); + evas_object_color_set(pr->background1, 0, 0, 0, 255); + pr->background2 = evas_object_rectangle_add(em->info->evas); + evas_object_color_set(pr->background2, 0, 0, 0, 255); + + pr->video = emotion_object_add(em->info->evas); + evas_object_event_callback_add(pr->video, EVAS_CALLBACK_KEY_DOWN, key_down_cb, em); - evas_viewport_get(em->info->evas, NULL, NULL, &w, &h); - pr->video = elation_object_add(em->info->evas); - evas_object_smart_callback_add(pr->video, "frame_decode", frame_decode_cb, em); evas_object_smart_callback_add(pr->video, "frame_resize", frame_resize_cb, em); evas_object_smart_callback_add(pr->video, "length_change",length_change_cb, em); + evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); + evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); - elation_object_file_set(pr->video, "dvd://"); - evas_object_move(pr->video, 0, 0); - evas_object_resize(pr->video, w, h); - elation_object_smooth_scale_set(pr->video, 1); - elation_object_play_set(pr->video, 1); + emotion_object_smooth_scale_set(pr->video, 1); + + pr->overlay = edje_object_add(em->info->evas); + edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "dvd"); + edje_object_signal_emit(pr->overlay, "media", "0"); + + pr->media_check_timer = ecore_timer_add(0.5, media_check_timer_cb, em); - return em; + return pr; } static void @@ -62,21 +100,99 @@ Elation_Module_Private *pr; pr = em->data; + evas_object_del(pr->background1); + evas_object_del(pr->background2); evas_object_del(pr->video); + evas_object_del(pr->overlay); + if (pr->media_check_timer) ecore_timer_del(pr->media_check_timer); + if (pr->media_play_timer) ecore_timer_del(pr->media_play_timer); + if (pr->media_fade_in_timer) ecore_timer_del(pr->media_fade_in_timer); free(pr); - free(em); } static void resize(Elation_Module *em) { Elation_Module_Private *pr; - Evas_Coord w, h; + Evas_Coord x, y, w, h, ww, hh; + double ratio; + int vw, vh; + + pr = em->data; + evas_output_viewport_get(em->info->evas, NULL, NULL, &w, &h); + + ww = w; + hh = h; + + evas_object_move(pr->overlay, 0, 0); + evas_object_resize(pr->overlay, w, h); + + emotion_object_size_get(pr->video, &vw, &vh); + ratio = emotion_object_ratio_get(pr->video); + if (ratio > 0.0) + { + x = 0; + y = (h - (w / ratio)) / 2; + if (y < 0) + { + y = 0; + x = (w - (h * ratio)) / 2; + w = h * ratio; + } + else + h = w / ratio; + evas_object_move(pr->video, x, y); + evas_object_resize(pr->video, w, h); + } + else + { + if (vh > 1) + { + ratio = (double)vw / (double)vh; + x = 0; + y = (h - (w / ratio)) / 2; + if (y < 0) + { + y = 0; + x = (w - (h * ratio)) / 2; + w = h * ratio; + } + else + h = w / ratio; + } + evas_object_move(pr->video, 0, 0); + evas_object_resize(pr->video, w, h); + } + + if (w == ww) + { + evas_object_move(pr->background1, 0, 0); + evas_object_resize(pr->background1, ww, y); + evas_object_move(pr->background2, 0, y + h); + evas_object_resize(pr->background2, ww, hh - h - y); + } + else + { + evas_object_move(pr->background1, 0, 0); + evas_object_resize(pr->background1, x, hh); + evas_object_move(pr->background2, x + w, 0); + evas_object_resize(pr->background2, ww - w - x, hh); + } +} + +static void +show(Elation_Module *em) +{ + Elation_Module_Private *pr; pr = em->data; - evas_viewport_get(em->info->evas, NULL, NULL, &w, &h); - evas_object_move(pr->video, 0, 0); - evas_object_resize(pr->video, w, h); + if (pr->have_media) + { + evas_object_show(pr->background1); + evas_object_show(pr->background2); + evas_object_show(pr->video); + } + evas_object_show(pr->overlay); } static void @@ -85,18 +201,224 @@ Elation_Module_Private *pr; pr = em->data; + evas_object_hide(pr->background1); + evas_object_hide(pr->background2); evas_object_hide(pr->video); + evas_object_hide(pr->overlay); } static void -show(Elation_Module *em) +focus(Elation_Module *em) +{ + Elation_Module_Private *pr; + + pr = em->data; + evas_object_focus_set(pr->video, 1); +} + +static void +unfocus(Elation_Module *em) +{ + Elation_Module_Private *pr; + + pr = em->data; + evas_object_focus_set(pr->video, 0); +} + +static void +action(Elation_Module *em, int action) { Elation_Module_Private *pr; pr = em->data; - evas_object_show(pr->video); + switch (action) + { + case ELATION_ACT_NEXT: + if (pr->menu_visible) + { + } + else + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_NEXT); + break; + case ELATION_ACT_PREV: + if (pr->menu_visible) + { + } + else + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_PREV); + break; + case ELATION_ACT_SELECT: + if (pr->menu_visible) + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_SELECT); + else + { + if (emotion_object_play_get(pr->video)) + emotion_object_play_set(pr->video, 0); + else + emotion_object_play_set(pr->video, 1); + } + break; + case ELATION_ACT_EXIT: + { + int fd; + + printf("stop...\n"); + emotion_object_play_set(pr->video, 0); + printf("rewind...\n"); + while (emotion_object_position_get(pr->video) != 0.0) + emotion_object_position_set(pr->video, 0.0); + printf("eject...\n"); +// emotion_object_eject(pr->video); + printf("fset...\n"); + if (0) + { + evas_object_del(pr->video); + pr->video = emotion_object_add(em->info->evas); + evas_object_event_callback_add(pr->video, EVAS_CALLBACK_KEY_DOWN, key_down_cb, em); + + evas_object_smart_callback_add(pr->video, "frame_decode", frame_decode_cb, em); + evas_object_smart_callback_add(pr->video, "frame_resize", frame_resize_cb, em); + evas_object_smart_callback_add(pr->video, "length_change",length_change_cb, em); + evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); + evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); + + emotion_object_smooth_scale_set(pr->video, 1); + + evas_object_stack_above(pr->video, pr->background1); + } + else + emotion_object_file_set(pr->video, NULL); + printf("emit..\n"); + edje_object_signal_emit(pr->overlay, "media", "0"); + evas_object_hide(pr->background1); + evas_object_hide(pr->background2); + evas_object_hide(pr->video); + pr->have_media = 0; + fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); + if (fd >= 0) + { + int i; + printf("eject disk!\n"); + + for (i = 0; i < 5; i++) + { + if (ioctl(fd, CDROMEJECT, 0) == 0) break; + perror("ioctl"); + sleep(1); + } + close(fd); + } + } + break; + case ELATION_ACT_UP: + if (pr->menu_visible) + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_UP); + else + { + // FIXME: bring up config menu + } + break; + case ELATION_ACT_DOWN: + if (pr->menu_visible) + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_DOWN); + else + { + // FIXME: bring up config menu + } + break; + case ELATION_ACT_LEFT: + if (pr->menu_visible) + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_LEFT); + else + { + double pos; + + pos = emotion_object_position_get(pr->video); + emotion_object_position_set(pr->video, pos - 30.0); + } + break; + case ELATION_ACT_RIGHT: + if (pr->menu_visible) + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_RIGHT); + else + { + double pos; + + pos = emotion_object_position_get(pr->video); + emotion_object_position_set(pr->video, pos + 30.0); + } + break; + case ELATION_ACT_MENU: + if (pr->menu_visible) + { + // FIXME: bring up config menu + } + else + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_MENU1); + break; + case ELATION_ACT_INFO: + if (pr->menu_visible) + { + // FIXME: bring up config menu + } + else + { + } + break; + case ELATION_ACT_INPUT: + if (pr->menu_visible) + { + // FIXME: bring up config menu + } + else + { + } + break; + case ELATION_ACT_PLAY: + if (pr->menu_visible) + { + emotion_object_event_simple_send(pr->video, EMOTION_EVENT_NEXT); + } + else + { + emotion_object_play_set(pr->video, 1); + } + break; + case ELATION_ACT_PAUSE: + if (pr->menu_visible) + { + } + else + { + if (emotion_object_play_get(pr->video)) + emotion_object_play_set(pr->video, 0); + else + emotion_object_play_set(pr->video, 1); + } + break; + case ELATION_ACT_STOP: + if (pr->menu_visible) + { + } + else + { + emotion_object_play_set(pr->video, 0); + emotion_object_position_set(pr->video, 0.0); + } + break; + case ELATION_ACT_REC: + break; + case ELATION_ACT_SKIP: + break; + case ELATION_ACT_NONE: + default: + break; + } } +/*** private stuff ***/ + +#if 0 static void dvd_info_get(Elation_Module *em) { @@ -118,6 +440,7 @@ } dvdnav_close(dvd); } +#endif static void frame_decode_cb(void *data, Evas_Object *obj, void *event_info) @@ -126,21 +449,17 @@ double pos, len; em = data; - pos = elation_object_position_get(obj); - len = elation_object_play_length_get(obj); + pos = emotion_object_position_get(obj); + len = emotion_object_play_length_get(obj); } static void frame_resize_cb(void *data, Evas_Object *obj, void *event_info) { Elation_Module *em; - int iw, ih; - double ratio; em = data; - elation_object_size_get(obj, &iw, &ih); - ratio = elation_object_ratio_get(obj); - if (ratio > 0.0) iw = ih * ratio; + em->resize(em); } static void @@ -150,6 +469,193 @@ double pos, len; em = data; - pos = elation_object_position_get(obj); - len = elation_object_play_length_get(obj); + pos = emotion_object_position_get(obj); + len = emotion_object_play_length_get(obj); +} + +static void +decode_stop_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; +// emotion_object_position_set(pr->video, 0.0); +// emotion_object_play_set(pr->video, 1); +} + +static void +button_num_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + if (emotion_object_spu_button_count_get(pr->video) > 0) + pr->menu_visible = 1; + else + pr->menu_visible = 0; +} + +static void +key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + Elation_Module *em; + Elation_Module_Private *pr; + int action = ELATION_ACT_NONE; + + ev = (Evas_Event_Key_Down *)event_info; + em = data; + pr = em->data; + + /* translator */ + /* FIXME: create proper translator sys later to amke remote config easy */ + + if (!strcmp(ev->keyname, "Escape")) action = ELATION_ACT_EXIT; + else if (!strcmp(ev->keyname, "Up")) action = ELATION_ACT_UP; + else if (!strcmp(ev->keyname, "Down")) action = ELATION_ACT_DOWN; + else if (!strcmp(ev->keyname, "Left")) action = ELATION_ACT_LEFT; + else if (!strcmp(ev->keyname, "Right")) action = ELATION_ACT_RIGHT; + else if (!strcmp(ev->keyname, "Return")) action = ELATION_ACT_SELECT; + else if (!strcmp(ev->keyname, "Prior")) action = ELATION_ACT_PREV; + else if (!strcmp(ev->keyname, "Next")) action = ELATION_ACT_NEXT; + else if (!strcmp(ev->keyname, "m")) action = ELATION_ACT_MENU; + else if (!strcmp(ev->keyname, "i")) action = ELATION_ACT_INFO; + else if (!strcmp(ev->keyname, "o")) action = ELATION_ACT_INPUT; + else if (!strcmp(ev->keyname, "p")) action = ELATION_ACT_PLAY; + else if (!strcmp(ev->keyname, "a")) action = ELATION_ACT_PAUSE; + else if (!strcmp(ev->keyname, "s")) action = ELATION_ACT_STOP; + else if (!strcmp(ev->keyname, "k")) action = ELATION_ACT_SKIP; + em->action(em, action); +} + +/* seriously - there should be a media detect module all on its own */ +static int +media_check_timer_cb(void *data) +{ + Elation_Module *em; + Elation_Module_Private *pr; + dvdnav_t *dvd; + int ok = 0; + int fd; + + em = data; + pr = em->data; + + if (pr->have_media) return 1; + fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); + if (fd >= 0) + { + if (pr->check_media_done) + { + struct cdrom_generic_command cgc; + struct request_sense sense; + unsigned char buffer[8]; + int ret; + + memset(&sense, 0, sizeof(sense)); + cgc.cmd[0] = GPCMD_GET_EVENT_STATUS_NOTIFICATION; + cgc.cmd[1] = 1; + cgc.cmd[4] = 16; + cgc.cmd[8] = sizeof(buffer); + cgc.timeout = 600; + cgc.buffer = buffer; + cgc.buflen = sizeof(buffer); + cgc.data_direction = CGC_DATA_READ; + cgc.sense = &sense; + cgc.quiet = 1; + ret = ioctl(fd, CDROM_SEND_PACKET, &cgc); + if (ret == -1) + ok = 0; + else + { + int val; + + val = buffer[4] & 0xf; + /* 3 = eject request */ + /* 2 = inseted new disk */ + if ((val == 2) || (val == 4)) ok = 1; + } + } + else + { + unsigned char buffer[8]; + int ret; + + ret = read(fd, buffer, 8); + if (ret == -1) + ok = 0; + else + ok = 1; + pr->check_media_done = 1; + } + close(fd); + } + if (ok) + { + pr->have_media = 1; + printf("have media\n"); + edje_object_signal_emit(pr->overlay, "media", "1"); + pr->media_play_timer = ecore_timer_add(2.0, media_play_timer_cb, em); + } + else + { + pr->have_media = 0; + } + return 1; +} + +static int +media_play_timer_cb(void *data) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + pr->media_play_timer = NULL; + if (!pr->have_media) return 0; + + edje_object_signal_emit(pr->overlay, "media", "ok"); + emotion_object_file_set(pr->video, "dvd:/"); + emotion_object_play_set(pr->video, 1); + if (evas_object_visible_get(pr->overlay)) + { + evas_object_color_set(pr->background1, 0, 0, 0, 0); + evas_object_color_set(pr->background2, 0, 0, 0, 0); + evas_object_color_set(pr->video, 255, 255, 255, 0); + evas_object_show(pr->background1); + evas_object_show(pr->background2); + evas_object_show(pr->video); + } + em->resize(em); + + pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); + pr->media_fade_in_start = ecore_time_get(); + + return 0; +} + +static int +media_fade_in_timer_cb(void *data) +{ + Elation_Module *em; + Elation_Module_Private *pr; + int a; + double t; + + em = data; + pr = em->data; + t = ecore_time_get() - pr->media_fade_in_start; + a = (t * 255) / 10.0; + if (a > 255) a = 255; + evas_object_color_set(pr->background1, 0, 0, 0, a); + evas_object_color_set(pr->background2, 0, 0, 0, a); + evas_object_color_set(pr->video, 255, 255, 255, a); + if (a < 255) return 1; + pr->media_fade_in_timer = NULL; + return 0; } |
From: <enl...@li...> - 2004-07-18 08:04:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/data Modified Files: Makefile.am Added Files: Vera.ttf VeraBd.ttf bg.png disk.png theme.edc theme.eet Log Message: actually works as a dvd player.. now xine is screwed when it comes to ejecting.. i cant shutdown the xine subsytem - it freezes inside a xine call. all say YAY to threads! grrrr. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/data/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 15 Jul 2004 09:47:00 -0000 1.1 +++ Makefile.am 18 Jul 2004 08:04:21 -0000 1.2 @@ -3,6 +3,8 @@ MAINTAINERCLEANFILES = Makefile.in filesdir = $(datadir)/elation/data -files_DATA = +files_DATA = \ +theme.eet \ +theme.edc EXTRA_DIST = $(files_DATA) |
From: <enl...@li...> - 2004-07-19 04:50:24
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: elation_dvd.c Log Message: debugging xine... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- elation_dvd.c 18 Jul 2004 08:04:21 -0000 1.2 +++ elation_dvd.c 19 Jul 2004 04:50:18 -0000 1.3 @@ -264,13 +264,10 @@ printf("stop...\n"); emotion_object_play_set(pr->video, 0); - printf("rewind...\n"); - while (emotion_object_position_get(pr->video) != 0.0) - emotion_object_position_set(pr->video, 0.0); printf("eject...\n"); // emotion_object_eject(pr->video); printf("fset...\n"); - if (0) + if (1) { evas_object_del(pr->video); pr->video = emotion_object_add(em->info->evas); |
From: <enl...@li...> - 2004-07-19 05:45:06
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: elation_dvd.c Log Message: werd! =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- elation_dvd.c 19 Jul 2004 04:50:18 -0000 1.3 +++ elation_dvd.c 19 Jul 2004 05:44:59 -0000 1.4 @@ -47,6 +47,11 @@ static void length_change_cb(void *data, Evas_Object *obj, void *event_info); static void decode_stop_cb(void *data, Evas_Object *obj, void *event_info); static void button_num_change_cb(void *data, Evas_Object *obj, void *event_info); +static void title_change_cb(void *data, Evas_Object *obj, void *event_info); +static void progress_change_cb(void *data, Evas_Object *obj, void *event_info); +static void channels_change_cb(void *data, Evas_Object *obj, void *event_info); +static void ref_change_cb(void *data, Evas_Object *obj, void *event_info); +static void button_change_cb(void *data, Evas_Object *obj, void *event_info); static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static int media_check_timer_cb(void *data); static int media_play_timer_cb(void *data); @@ -83,6 +88,12 @@ evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); + evas_object_smart_callback_add(pr->video, "title_change", title_change_cb, em); + evas_object_smart_callback_add(pr->video, "progress_change", progress_change_cb, em); + evas_object_smart_callback_add(pr->video, "channels_change", channels_change_cb, em); + evas_object_smart_callback_add(pr->video, "ref_change", ref_change_cb, em); + evas_object_smart_callback_add(pr->video, "button_change", button_change_cb, em); + emotion_object_smooth_scale_set(pr->video, 1); pr->overlay = edje_object_add(em->info->evas); @@ -263,7 +274,7 @@ int fd; printf("stop...\n"); - emotion_object_play_set(pr->video, 0); +// emotion_object_play_set(pr->video, 0); printf("eject...\n"); // emotion_object_eject(pr->video); printf("fset...\n"); @@ -279,12 +290,22 @@ evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); + evas_object_smart_callback_add(pr->video, "title_change", title_change_cb, em); + evas_object_smart_callback_add(pr->video, "progress_change", progress_change_cb, em); + evas_object_smart_callback_add(pr->video, "channels_change", channels_change_cb, em); + evas_object_smart_callback_add(pr->video, "ref_change", ref_change_cb, em); + evas_object_smart_callback_add(pr->video, "button_change", button_change_cb, em); + emotion_object_smooth_scale_set(pr->video, 1); evas_object_stack_above(pr->video, pr->background1); + evas_object_focus_set(pr->video, 1); } else - emotion_object_file_set(pr->video, NULL); + { + emotion_object_file_set(pr->video, NULL); + emotion_object_play_set(pr->video, 0); + } printf("emit..\n"); edje_object_signal_emit(pr->overlay, "media", "0"); evas_object_hide(pr->background1); @@ -497,6 +518,69 @@ } static void +title_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + printf("EL video title to: \"%s\"\n", emotion_object_title_get(pr->video)); +} + +static void +progress_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + printf("EL progress: \"%s\" %3.3f\n", + emotion_object_progress_info_get(pr->video), + emotion_object_progress_status_get(pr->video)); +} + +static void +channels_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + printf("EL channels changed: [AUD %i][VID %i][SPU %i]\n", + emotion_object_audio_channel_count(pr->video), + emotion_object_video_channel_count(pr->video), + emotion_object_spu_channel_count(pr->video)); +} + +static void +ref_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + printf("EL video ref to: \"%s\" %i\n", + emotion_object_ref_file_get(pr->video), + emotion_object_ref_num_get(pr->video)); +} + +static void +button_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elation_Module *em; + Elation_Module_Private *pr; + + em = data; + pr = em->data; + printf("EL video selected spu button: %i\n", + emotion_object_spu_button_get(pr->video)); +} + +static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev; |
From: <enl...@li...> - 2004-07-20 08:12:06
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: Makefile.am elation_dvd.c Added Files: elation_disk.c Log Message: disk checking is in a module of its own now. it forks of a slave to do the checking too and ejecting. the eventual plan is to have the slave do all the disk work that coudl block and it just messages back to the parent process (via the disk module) whats going on. it does some of this already. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 18 Jul 2004 08:04:21 -0000 1.2 +++ Makefile.am 20 Jul 2004 08:11:59 -0000 1.3 @@ -6,7 +6,7 @@ pkgdir = $(libdir)/elation -pkg_LTLIBRARIES = elation_menu.la elation_dvd.la +pkg_LTLIBRARIES = elation_menu.la elation_dvd.la elation_disk.la elation_menu_la_SOURCES = elation_menu.c elation_menu_la_LIBADD = @my_libs@ @@ -14,6 +14,11 @@ elation_menu_la_DEPENDENCIES = $(top_builddir)/config.h elation_dvd_la_SOURCES = elation_dvd.c -elation_dvd_la_LIBADD = @my_libs@ -ldvdnav +elation_dvd_la_LIBADD = @my_libs@ elation_dvd_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version elation_dvd_la_DEPENDENCIES = $(top_builddir)/config.h + +elation_disk_la_SOURCES = elation_disk.c +elation_disk_la_LIBADD = @my_libs@ +elation_disk_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version +elation_disk_la_DEPENDENCIES = $(top_builddir)/config.h =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- elation_dvd.c 19 Jul 2004 05:44:59 -0000 1.4 +++ elation_dvd.c 20 Jul 2004 08:11:59 -0000 1.5 @@ -1,8 +1,5 @@ #include "Elation.h" -#include <dvdnav/dvdnav.h> -#include <dvdnav/nav_read.h> - #include <stdio.h> #include <unistd.h> #include <stdlib.h> @@ -24,13 +21,11 @@ Evas_Object *background2; Evas_Object *video; - Ecore_Timer *media_check_timer; Ecore_Timer *media_play_timer; double media_fade_in_start; Ecore_Timer *media_fade_in_timer; unsigned char have_media : 1; - unsigned char check_media_done : 1; unsigned char menu_visible : 1; }; @@ -53,7 +48,6 @@ static void ref_change_cb(void *data, Evas_Object *obj, void *event_info); static void button_change_cb(void *data, Evas_Object *obj, void *event_info); static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static int media_check_timer_cb(void *data); static int media_play_timer_cb(void *data); static int media_fade_in_timer_cb(void *data); @@ -99,8 +93,6 @@ pr->overlay = edje_object_add(em->info->evas); edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "dvd"); edje_object_signal_emit(pr->overlay, "media", "0"); - - pr->media_check_timer = ecore_timer_add(0.5, media_check_timer_cb, em); return pr; } @@ -115,7 +107,6 @@ evas_object_del(pr->background2); evas_object_del(pr->video); evas_object_del(pr->overlay); - if (pr->media_check_timer) ecore_timer_del(pr->media_check_timer); if (pr->media_play_timer) ecore_timer_del(pr->media_play_timer); if (pr->media_fade_in_timer) ecore_timer_del(pr->media_fade_in_timer); free(pr); @@ -312,20 +303,7 @@ evas_object_hide(pr->background2); evas_object_hide(pr->video); pr->have_media = 0; - fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); - if (fd >= 0) - { - int i; - printf("eject disk!\n"); - - for (i = 0; i < 5; i++) - { - if (ioctl(fd, CDROMEJECT, 0) == 0) break; - perror("ioctl"); - sleep(1); - } - close(fd); - } + em->info->func.action_broadcast(ELATION_ACT_DISK_EJECT); } break; case ELATION_ACT_UP: @@ -424,9 +402,13 @@ emotion_object_position_set(pr->video, 0.0); } break; - case ELATION_ACT_REC: + case ELATION_ACT_DISK_IN: + pr->have_media = 1; + edje_object_signal_emit(pr->overlay, "media", "1"); + pr->media_play_timer = ecore_timer_add(2.0, media_play_timer_cb, em); break; - case ELATION_ACT_SKIP: + case ELATION_ACT_DISK_OUT: + pr->have_media = 0; break; case ELATION_ACT_NONE: default: @@ -436,30 +418,6 @@ /*** private stuff ***/ -#if 0 -static void -dvd_info_get(Elation_Module *em) -{ - dvdnav_t *dvd; - int title_num = 0; - int i; - char *str = NULL; - - if (dvdnav_open(&dvd, "/dev/dvd") == DVDNAV_STATUS_ERR) return; - dvdnav_get_title_string(dvd, &str); - printf("TITLE: %s\n", str); - // strdup str as its an internal string in the dvd handle - dvdnav_get_number_of_titles(dvd, &title_num); - for (i = 0; i < title_num; i++) - { - int part_num; - - dvdnav_get_number_of_parts(dvd, i, &part_num); - } - dvdnav_close(dvd); -} -#endif - static void frame_decode_cb(void *data, Evas_Object *obj, void *event_info) { @@ -613,82 +571,6 @@ em->action(em, action); } -/* seriously - there should be a media detect module all on its own */ -static int -media_check_timer_cb(void *data) -{ - Elation_Module *em; - Elation_Module_Private *pr; - dvdnav_t *dvd; - int ok = 0; - int fd; - - em = data; - pr = em->data; - - if (pr->have_media) return 1; - fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); - if (fd >= 0) - { - if (pr->check_media_done) - { - struct cdrom_generic_command cgc; - struct request_sense sense; - unsigned char buffer[8]; - int ret; - - memset(&sense, 0, sizeof(sense)); - cgc.cmd[0] = GPCMD_GET_EVENT_STATUS_NOTIFICATION; - cgc.cmd[1] = 1; - cgc.cmd[4] = 16; - cgc.cmd[8] = sizeof(buffer); - cgc.timeout = 600; - cgc.buffer = buffer; - cgc.buflen = sizeof(buffer); - cgc.data_direction = CGC_DATA_READ; - cgc.sense = &sense; - cgc.quiet = 1; - ret = ioctl(fd, CDROM_SEND_PACKET, &cgc); - if (ret == -1) - ok = 0; - else - { - int val; - - val = buffer[4] & 0xf; - /* 3 = eject request */ - /* 2 = inseted new disk */ - if ((val == 2) || (val == 4)) ok = 1; - } - } - else - { - unsigned char buffer[8]; - int ret; - - ret = read(fd, buffer, 8); - if (ret == -1) - ok = 0; - else - ok = 1; - pr->check_media_done = 1; - } - close(fd); - } - if (ok) - { - pr->have_media = 1; - printf("have media\n"); - edje_object_signal_emit(pr->overlay, "media", "1"); - pr->media_play_timer = ecore_timer_add(2.0, media_play_timer_cb, em); - } - else - { - pr->have_media = 0; - } - return 1; -} - static int media_play_timer_cb(void *data) { |
From: <enl...@li...> - 2004-07-20 08:12:42
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/bin Modified Files: Elation.h elation_main.c elation_module.c Log Message: disk checking is in a module of its own now. it forks of a slave to do the checking too and ejecting. the eventual plan is to have the slave do all the disk work that coudl block and it just messages back to the parent process (via the disk module) whats going on. it does some of this already. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/Elation.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Elation.h 18 Jul 2004 08:04:21 -0000 1.2 +++ Elation.h 20 Jul 2004 08:11:58 -0000 1.3 @@ -20,6 +20,9 @@ struct _Elation_Info { Evas *evas; + struct { + void (*action_broadcast) (int action); + } func; }; struct _Elation_Module @@ -59,10 +62,15 @@ ELATION_ACT_PAUSE, ELATION_ACT_STOP, ELATION_ACT_REC, - ELATION_ACT_SKIP + ELATION_ACT_SKIP, + ELATION_ACT_DISK_OUT, + ELATION_ACT_DISK_IN, + ELATION_ACT_DISK_EJECT }; Elation_Module *elation_module_open(Elation_Info *info, Elation_Module *parent, char *name); void elation_module_close(Elation_Module *em); - +void elation_module_action_broadcast(int action); +void elation_module_resize_broadcast(void); + #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/elation_main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- elation_main.c 18 Jul 2004 08:04:21 -0000 1.2 +++ elation_main.c 20 Jul 2004 08:11:58 -0000 1.3 @@ -6,12 +6,13 @@ int main_signal_exit(void *data, int ev_type, void *ev); void main_delete_request(Ecore_Evas *ee); void bg_setup(void); -void bg_resize(Evas_Coord w, Evas_Coord h); -void menu_setup(void); -void menu_resize(Evas_Coord w, Evas_Coord h); +void bg_resize(void); +void dvd_setup(void); +void disk_setup(void); static Evas_Object *o_bg = NULL; -static Elation_Module *em_menu = NULL; +static Elation_Module *em_disk = NULL; +static Elation_Module *em_dvd = NULL; Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; @@ -23,9 +24,15 @@ int main(int argc, char **argv) { + /* methods modules can call */ + elation_info.func.action_broadcast = elation_module_action_broadcast; + if (main_start(argc, argv) < 1) return -1; bg_setup(); - menu_setup(); + dvd_setup(); + disk_setup(); + bg_resize(); + elation_module_resize_broadcast(); ecore_main_loop_begin(); main_stop(); return 0; @@ -127,11 +134,8 @@ void main_resize(Ecore_Evas *ee) { - Evas_Coord w, h; - - evas_output_viewport_get(evas, NULL, NULL, &w, &h); - bg_resize(w, h); - menu_resize(w, h); + bg_resize(); + elation_module_resize_broadcast(); } int @@ -153,7 +157,6 @@ bg_setup(void) { Evas_Object *o; - Evas_Coord w, h; o = edje_object_add(evas); o_bg = o; @@ -162,37 +165,48 @@ evas_object_layer_set(o, -999); evas_object_show(o); - evas_output_viewport_get(evas, NULL, NULL, &w, &h); - bg_resize(w, h); } void -bg_resize(Evas_Coord w, Evas_Coord h) +bg_resize(void) { + Evas_Coord w, h; + + evas_output_viewport_get(evas, NULL, NULL, &w, &h); + evas_object_move(o_bg, 0, 0); evas_object_resize(o_bg, w, h); } -/*** menu ***/ +/*** dvd ***/ void -menu_setup(void) +dvd_setup(void) { Elation_Module *em; Evas_Coord w, h; em = elation_module_open(&elation_info, NULL, "dvd"); - em_menu = em; + em_dvd = em; if (em) { em->show(em); em->focus(em); } - evas_output_viewport_get(evas, NULL, NULL, &w, &h); - menu_resize(w, h); } +/*** disk ***/ + void -menu_resize(Evas_Coord w, Evas_Coord h) +disk_setup(void) { - em_menu->resize(em_menu); + Elation_Module *em; + Evas_Coord w, h; + + em = elation_module_open(&elation_info, NULL, "disk"); + em_disk = em; + if (em) + { + em->show(em); + em->focus(em); + } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/elation_module.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- elation_module.c 18 Jul 2004 08:04:21 -0000 1.2 +++ elation_module.c 20 Jul 2004 08:11:58 -0000 1.3 @@ -2,6 +2,8 @@ #include <dlfcn.h> +Evas_List *modules = NULL; + Elation_Module * elation_module_open(Elation_Info *info, Elation_Module *parent, char *name) { @@ -9,7 +11,8 @@ void *(*init) (Elation_Module *em); void *handle; char buf[4096]; - + + dlopen(NULL, RTLD_NOW | RTLD_GLOBAL); snprintf(buf, sizeof(buf), "%s/elation_%s.so", PACKAGE_LIB_DIR"/elation", name); handle = dlopen(buf, RTLD_NOW | RTLD_LOCAL); if (!handle) @@ -43,6 +46,7 @@ free(em); return NULL; } + modules = evas_list_append(modules, em); return em; } @@ -66,6 +70,35 @@ if (em->parent) em->parent->children = evas_list_remove(em->parent->children, em); + modules = evas_list_remove(modules, em); free(em); } +void +elation_module_action_broadcast(int action) +{ + Evas_List *l; + + /* FIXME: what if amodule quits as a result of an action???? */ + for (l = modules; l; l = l->next) + { + Elation_Module *em; + + em = l->data; + if (em->action) em->action(em, action); + } +} + +void +elation_module_resize_broadcast(void) +{ + Evas_List *l; + + for (l = modules; l; l = l->next) + { + Elation_Module *em; + + em = l->data; + if (em->resize) em->resize(em); + } +} |
From: <enl...@li...> - 2004-07-24 05:19:41
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/bin Modified Files: Elation.h elation_main.c Log Message: now auto-detects media type (vcd, dvd, audio cd etc.) and launches an appropriate module to handle it... vcd i have not tested at all - i just used the dvd module verbatim. - i hope it works. theres an audio cd module- dvd module copied verbatim. need to fix that one heavily. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/Elation.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Elation.h 20 Jul 2004 08:11:58 -0000 1.3 +++ Elation.h 24 Jul 2004 05:19:33 -0000 1.4 @@ -22,6 +22,7 @@ Evas *evas; struct { void (*action_broadcast) (int action); + Elation_Module *(*module_open) (Elation_Info *inf, Elation_Module *em, char *name); } func; }; @@ -65,7 +66,15 @@ ELATION_ACT_SKIP, ELATION_ACT_DISK_OUT, ELATION_ACT_DISK_IN, - ELATION_ACT_DISK_EJECT + ELATION_ACT_DISK_EJECT, + ELATION_ACT_DISK_TYPE_UNKNOWN, + ELATION_ACT_DISK_TYPE_AUDIO, + ELATION_ACT_DISK_TYPE_VCD, + ELATION_ACT_DISK_TYPE_SVCD, + ELATION_ACT_DISK_TYPE_DVD, + ELATION_ACT_DISK_TYPE_DATA, + ELATION_ACT_DISK_TYPE_MIXED, + ELATION_ACT_DISK_TYPE_BLANK }; Elation_Module *elation_module_open(Elation_Info *info, Elation_Module *parent, char *name); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/bin/elation_main.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- elation_main.c 20 Jul 2004 08:11:58 -0000 1.3 +++ elation_main.c 24 Jul 2004 05:19:33 -0000 1.4 @@ -7,12 +7,12 @@ void main_delete_request(Ecore_Evas *ee); void bg_setup(void); void bg_resize(void); -void dvd_setup(void); +void media_setup(void); void disk_setup(void); static Evas_Object *o_bg = NULL; static Elation_Module *em_disk = NULL; -static Elation_Module *em_dvd = NULL; +static Elation_Module *em_media = NULL; Ecore_Evas *ecore_evas = NULL; Evas *evas = NULL; @@ -26,10 +26,11 @@ { /* methods modules can call */ elation_info.func.action_broadcast = elation_module_action_broadcast; + elation_info.func.module_open = elation_module_open; if (main_start(argc, argv) < 1) return -1; bg_setup(); - dvd_setup(); + media_setup(); disk_setup(); bg_resize(); elation_module_resize_broadcast(); @@ -177,16 +178,16 @@ evas_object_resize(o_bg, w, h); } -/*** dvd ***/ +/*** media ***/ void -dvd_setup(void) +media_setup(void) { Elation_Module *em; Evas_Coord w, h; - em = elation_module_open(&elation_info, NULL, "dvd"); - em_dvd = em; + em = elation_module_open(&elation_info, NULL, "media"); + em_media = em; if (em) { em->show(em); |
From: <enl...@li...> - 2004-07-24 05:19:41
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: Makefile.am elation_disk.c elation_dvd.c Added Files: elation_cd.c elation_media.c elation_vcd.c Log Message: now auto-detects media type (vcd, dvd, audio cd etc.) and launches an appropriate module to handle it... vcd i have not tested at all - i just used the dvd module verbatim. - i hope it works. theres an audio cd module- dvd module copied verbatim. need to fix that one heavily. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 20 Jul 2004 08:11:59 -0000 1.3 +++ Makefile.am 24 Jul 2004 05:19:33 -0000 1.4 @@ -6,7 +6,13 @@ pkgdir = $(libdir)/elation -pkg_LTLIBRARIES = elation_menu.la elation_dvd.la elation_disk.la +pkg_LTLIBRARIES = \ +elation_menu.la \ +elation_dvd.la \ +elation_disk.la \ +elation_media.la \ +elation_vcd.la \ +elation_cd.la elation_menu_la_SOURCES = elation_menu.c elation_menu_la_LIBADD = @my_libs@ @@ -22,3 +28,19 @@ elation_disk_la_LIBADD = @my_libs@ elation_disk_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version elation_disk_la_DEPENDENCIES = $(top_builddir)/config.h + +elation_media_la_SOURCES = elation_media.c +elation_media_la_LIBADD = @my_libs@ +elation_media_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version +elation_media_la_DEPENDENCIES = $(top_builddir)/config.h + +elation_vcd_la_SOURCES = elation_vcd.c +elation_vcd_la_LIBADD = @my_libs@ +elation_vcd_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version +elation_vcd_la_DEPENDENCIES = $(top_builddir)/config.h + +elation_cd_la_SOURCES = elation_cd.c +elation_cd_la_LIBADD = @my_libs@ +elation_cd_la_LDFLAGS = $(LDFLAGS) -no-undefined -module -avoid-version +elation_cd_la_DEPENDENCIES = $(top_builddir)/config.h + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_disk.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_disk.c 20 Jul 2004 08:11:59 -0000 1.1 +++ elation_disk.c 24 Jul 2004 05:19:33 -0000 1.2 @@ -2,11 +2,14 @@ #include <stdio.h> #include <unistd.h> +#include <limits.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/cdrom.h> +#include <sys/types.h> +#include <dirent.h> /* external module symbols. the rest is private */ void *init(Elation_Module *em); @@ -26,6 +29,9 @@ Ecore_Fd_Handler *slave_fd_handler; + char *mount_dir; + char *device; + unsigned char have_media : 1; unsigned char check_media_done : 1; }; @@ -35,6 +41,14 @@ #define INF_NO_MEDIA 1 #define INF_MEDIA 2 +#define TYPE_UNKNOWN 3 +#define TYPE_AUDIO 4 +#define TYPE_VCD 5 +#define TYPE_SVCD 6 +#define TYPE_DVD 7 +#define TYPE_DATA 8 +#define TYPE_MIXED 9 +#define TYPE_BLANK 10 static void shutdown(Elation_Module *em); static void resize(Elation_Module *em); @@ -47,6 +61,10 @@ static int media_check_timer_cb(void *data); static void media_eject(Elation_Module *em); static int slave_fd_cb(void *data, Ecore_Fd_Handler *fdh); + +static char *disk_mount(char *dev); +static void disk_unmount(char *mount_dir); +static int disk_has_top_dir(char *mount_dir, char *dir); void * init(Elation_Module *em) @@ -65,6 +83,7 @@ em->unfocus = unfocus; em->action = action; + pr->device = strdup("/dev/dvd"); { int fds_in[2], fds_out[2]; pid_t pid; @@ -95,6 +114,7 @@ { for (;;) { + int type = 0; int buf; read(pr->slave_side_read_fd, &buf, sizeof(buf)); @@ -105,7 +125,7 @@ printf("check...\n"); if (pr->have_media) continue; - fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); + fd = open(pr->device, O_RDONLY | O_NONBLOCK); if (fd >= 0) { if (pr->check_media_done) @@ -149,29 +169,95 @@ ok = 0; else ok = 1; + printf("first check: %i\n", ok); pr->check_media_done = 1; } close(fd); } if (ok) { + int fd; + pr->have_media = 1; printf("have media\n"); /* FIXME: this is where we should check what kind of media we have */ + fd = open(pr->device, O_RDONLY | O_NONBLOCK); + if (fd >= 0) + { + int ret; + + ret = ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); + if (ret == CDS_DISC_OK) + { + struct cdrom_tochdr hd; + + ret = ioctl(fd, CDROMREADTOCHDR, &hd); + if (ret != 0) /* blank */ + type = 7; + else + { + ret = ioctl(fd, CDROM_DISC_STATUS, CDSL_CURRENT); + if (ret == CDS_AUDIO) + type = 1; + else if (ret == CDS_MIXED) + type = 6; + else if ((ret == CDS_DATA_1) || + (ret == CDS_DATA_2)) + { + pr->mount_dir = disk_mount(pr->device); + if (pr->mount_dir) + { + if (disk_has_top_dir(pr->mount_dir, "video_ts")) + type = 4; + else if (disk_has_top_dir(pr->mount_dir, "vcd")) + type = 2; + else if (disk_has_top_dir(pr->mount_dir, "svcd")) + type = 3; + else + type = 5; + } + } + } + } + close(fd); + } } else pr->have_media = 0; if (pr->have_media) buf = INF_MEDIA; else buf = INF_NO_MEDIA; write(pr->slave_side_write_fd, &buf, sizeof(buf)); + if (type == 0) /* unknown */ + buf = TYPE_UNKNOWN; + else if (type == 1) /* audio */ + buf = TYPE_AUDIO; + else if (type == 2) /* vcd */ + buf = TYPE_VCD; + else if (type == 3) /* svcd */ + buf = TYPE_SVCD; + else if (type == 4) /* dvd */ + buf = TYPE_DVD; + else if (type == 5) /* data */ + buf = TYPE_DATA; + else if (type == 6) /* mixed */ + buf = TYPE_MIXED; + else if (type == 7) /* mixed */ + buf = TYPE_BLANK; + printf("disk type: %i\n", type); + write(pr->slave_side_write_fd, &buf, sizeof(buf)); } else if (buf == CMD_EJECT) { int fd; printf("eject..\n"); + if (pr->mount_dir) + { + disk_unmount(pr->mount_dir); + free(pr->mount_dir); + } pr->have_media = 0; - fd = open("/dev/dvd", O_RDONLY | O_NONBLOCK); + fd = open(pr->device, O_RDONLY | O_NONBLOCK); if (fd >= 0) { int i; @@ -205,6 +291,12 @@ if (pr->media_check_timer) ecore_timer_del(pr->media_check_timer); close(pr->slave_read_fd); kill(pr->slave_pid, SIGKILL); + free(pr->device); + if (pr->mount_dir) + { + disk_unmount(pr->mount_dir); + free(pr->mount_dir); + } free(pr); } @@ -295,7 +387,100 @@ em->info->func.action_broadcast(ELATION_ACT_DISK_OUT); else if (buf == INF_MEDIA) em->info->func.action_broadcast(ELATION_ACT_DISK_IN); + else if (buf == TYPE_UNKNOWN) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_UNKNOWN); + else if (buf == TYPE_AUDIO) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_AUDIO); + else if (buf == TYPE_VCD) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_VCD); + else if (buf == TYPE_SVCD) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_SVCD); + else if (buf == TYPE_DVD) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_DVD); + else if (buf == TYPE_DATA) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_DATA); + else if (buf == TYPE_MIXED) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_MIXED); + else if (buf == TYPE_BLANK) + em->info->func.action_broadcast(ELATION_ACT_DISK_TYPE_BLANK); } } return 1; } + +static char * +disk_mount(char *dev) +{ + FILE *f; + char buf[4096]; + char realdev[PATH_MAX]; + char *mountpoint = NULL; + + if (!realpath(dev, realdev)) return NULL; + f = fopen("/etc/fstab", "rb"); + while (fgets(buf, sizeof(buf), f)) + { + char tdev[PATH_MAX]; + char realtdev[PATH_MAX]; + char mount[PATH_MAX]; + + if (buf[0] != '#') + { + sscanf(buf, "%s %s", tdev, mount); + if (realpath(tdev, realtdev)) + { + if (!strcmp(realtdev, realdev)) + { + mountpoint = strdup(mount); + break; + } + } + } + } + fclose(f); + if (mountpoint) + { + snprintf(buf, sizeof(buf), "mount %s", mountpoint); + system(buf); + } + return mountpoint; +} + +static void +disk_unmount(char *mount_dir) +{ + if (mount_dir) + { + char buf[4096]; + + snprintf(buf, sizeof(buf), "umount %s", mount_dir); + system(buf); + } +} + +static int +disk_has_top_dir(char *mount_dir, char *dir) +{ + DIR *dirp; + struct dirent *dp; + + dirp = opendir(mount_dir); + if (!dirp) return 0; + while ((dp = readdir(dirp))) + { + if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, ".."))) + { + char buf[PATH_MAX]; + int i; + + strcpy(buf, dp->d_name); + if (!strcasecmp(dp->d_name, dir)) + { + closedir(dirp); + return 1; + } + } + } + closedir(dirp); + return 0; +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- elation_dvd.c 20 Jul 2004 08:11:59 -0000 1.5 +++ elation_dvd.c 24 Jul 2004 05:19:33 -0000 1.6 @@ -16,16 +16,13 @@ struct _Elation_Module_Private { - Evas_Object *overlay; Evas_Object *background1; Evas_Object *background2; Evas_Object *video; - Ecore_Timer *media_play_timer; double media_fade_in_start; Ecore_Timer *media_fade_in_timer; - unsigned char have_media : 1; unsigned char menu_visible : 1; }; @@ -90,9 +87,11 @@ emotion_object_smooth_scale_set(pr->video, 1); - pr->overlay = edje_object_add(em->info->evas); - edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "dvd"); - edje_object_signal_emit(pr->overlay, "media", "0"); + emotion_object_file_set(pr->video, "dvd:/"); + emotion_object_play_set(pr->video, 1); + + pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); + pr->media_fade_in_start = ecore_time_get(); return pr; } @@ -106,8 +105,6 @@ evas_object_del(pr->background1); evas_object_del(pr->background2); evas_object_del(pr->video); - evas_object_del(pr->overlay); - if (pr->media_play_timer) ecore_timer_del(pr->media_play_timer); if (pr->media_fade_in_timer) ecore_timer_del(pr->media_fade_in_timer); free(pr); } @@ -126,9 +123,6 @@ ww = w; hh = h; - evas_object_move(pr->overlay, 0, 0); - evas_object_resize(pr->overlay, w, h); - emotion_object_size_get(pr->video, &vw, &vh); ratio = emotion_object_ratio_get(pr->video); if (ratio > 0.0) @@ -188,13 +182,9 @@ Elation_Module_Private *pr; pr = em->data; - if (pr->have_media) - { - evas_object_show(pr->background1); - evas_object_show(pr->background2); - evas_object_show(pr->video); - } - evas_object_show(pr->overlay); + evas_object_show(pr->background1); + evas_object_show(pr->background2); + evas_object_show(pr->video); } static void @@ -206,7 +196,6 @@ evas_object_hide(pr->background1); evas_object_hide(pr->background2); evas_object_hide(pr->video); - evas_object_hide(pr->overlay); } static void @@ -262,48 +251,8 @@ break; case ELATION_ACT_EXIT: { - int fd; - - printf("stop...\n"); -// emotion_object_play_set(pr->video, 0); - printf("eject...\n"); -// emotion_object_eject(pr->video); - printf("fset...\n"); - if (1) - { - evas_object_del(pr->video); - pr->video = emotion_object_add(em->info->evas); - evas_object_event_callback_add(pr->video, EVAS_CALLBACK_KEY_DOWN, key_down_cb, em); - - evas_object_smart_callback_add(pr->video, "frame_decode", frame_decode_cb, em); - evas_object_smart_callback_add(pr->video, "frame_resize", frame_resize_cb, em); - evas_object_smart_callback_add(pr->video, "length_change",length_change_cb, em); - evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); - evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); - - evas_object_smart_callback_add(pr->video, "title_change", title_change_cb, em); - evas_object_smart_callback_add(pr->video, "progress_change", progress_change_cb, em); - evas_object_smart_callback_add(pr->video, "channels_change", channels_change_cb, em); - evas_object_smart_callback_add(pr->video, "ref_change", ref_change_cb, em); - evas_object_smart_callback_add(pr->video, "button_change", button_change_cb, em); - - emotion_object_smooth_scale_set(pr->video, 1); - - evas_object_stack_above(pr->video, pr->background1); - evas_object_focus_set(pr->video, 1); - } - else - { - emotion_object_file_set(pr->video, NULL); - emotion_object_play_set(pr->video, 0); - } - printf("emit..\n"); - edje_object_signal_emit(pr->overlay, "media", "0"); - evas_object_hide(pr->background1); - evas_object_hide(pr->background2); - evas_object_hide(pr->video); - pr->have_media = 0; em->info->func.action_broadcast(ELATION_ACT_DISK_EJECT); + em->shutdown(em); } break; case ELATION_ACT_UP: @@ -402,15 +351,6 @@ emotion_object_position_set(pr->video, 0.0); } break; - case ELATION_ACT_DISK_IN: - pr->have_media = 1; - edje_object_signal_emit(pr->overlay, "media", "1"); - pr->media_play_timer = ecore_timer_add(2.0, media_play_timer_cb, em); - break; - case ELATION_ACT_DISK_OUT: - pr->have_media = 0; - break; - case ELATION_ACT_NONE: default: break; } @@ -572,37 +512,6 @@ } static int -media_play_timer_cb(void *data) -{ - Elation_Module *em; - Elation_Module_Private *pr; - - em = data; - pr = em->data; - pr->media_play_timer = NULL; - if (!pr->have_media) return 0; - - edje_object_signal_emit(pr->overlay, "media", "ok"); - emotion_object_file_set(pr->video, "dvd:/"); - emotion_object_play_set(pr->video, 1); - if (evas_object_visible_get(pr->overlay)) - { - evas_object_color_set(pr->background1, 0, 0, 0, 0); - evas_object_color_set(pr->background2, 0, 0, 0, 0); - evas_object_color_set(pr->video, 255, 255, 255, 0); - evas_object_show(pr->background1); - evas_object_show(pr->background2); - evas_object_show(pr->video); - } - em->resize(em); - - pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); - pr->media_fade_in_start = ecore_time_get(); - - return 0; -} - -static int media_fade_in_timer_cb(void *data) { Elation_Module *em; |
From: <enl...@li...> - 2004-07-24 07:19:55
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: elation_cd.c elation_disk.c Log Message: handle cd's better =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_cd.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_cd.c 24 Jul 2004 05:19:33 -0000 1.1 +++ elation_cd.c 24 Jul 2004 07:19:47 -0000 1.2 @@ -16,14 +16,10 @@ struct _Elation_Module_Private { - Evas_Object *background1; - Evas_Object *background2; + char *device; + int track; + int track_num; Evas_Object *video; - - double media_fade_in_start; - Ecore_Timer *media_fade_in_timer; - - unsigned char menu_visible : 1; }; static void shutdown(Elation_Module *em); @@ -35,15 +31,11 @@ static void action(Elation_Module *em, int action); static void frame_decode_cb(void *data, Evas_Object *obj, void *event_info); -static void frame_resize_cb(void *data, Evas_Object *obj, void *event_info); static void length_change_cb(void *data, Evas_Object *obj, void *event_info); static void decode_stop_cb(void *data, Evas_Object *obj, void *event_info); -static void button_num_change_cb(void *data, Evas_Object *obj, void *event_info); static void title_change_cb(void *data, Evas_Object *obj, void *event_info); static void progress_change_cb(void *data, Evas_Object *obj, void *event_info); static void channels_change_cb(void *data, Evas_Object *obj, void *event_info); -static void ref_change_cb(void *data, Evas_Object *obj, void *event_info); -static void button_change_cb(void *data, Evas_Object *obj, void *event_info); static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static int media_play_timer_cb(void *data); static int media_fade_in_timer_cb(void *data); @@ -65,33 +57,64 @@ em->unfocus = unfocus; em->action = action; - pr->background1 = evas_object_rectangle_add(em->info->evas); - evas_object_color_set(pr->background1, 0, 0, 0, 255); - pr->background2 = evas_object_rectangle_add(em->info->evas); - evas_object_color_set(pr->background2, 0, 0, 0, 255); + pr->device = strdup("/dev/cdrom"); pr->video = emotion_object_add(em->info->evas); evas_object_event_callback_add(pr->video, EVAS_CALLBACK_KEY_DOWN, key_down_cb, em); evas_object_smart_callback_add(pr->video, "frame_decode", frame_decode_cb, em); - evas_object_smart_callback_add(pr->video, "frame_resize", frame_resize_cb, em); evas_object_smart_callback_add(pr->video, "length_change",length_change_cb, em); evas_object_smart_callback_add(pr->video, "decode_stop", decode_stop_cb, em); - evas_object_smart_callback_add(pr->video, "button_num_change", button_num_change_cb, em); evas_object_smart_callback_add(pr->video, "title_change", title_change_cb, em); evas_object_smart_callback_add(pr->video, "progress_change", progress_change_cb, em); evas_object_smart_callback_add(pr->video, "channels_change", channels_change_cb, em); - evas_object_smart_callback_add(pr->video, "ref_change", ref_change_cb, em); - evas_object_smart_callback_add(pr->video, "button_change", button_change_cb, em); - - emotion_object_smooth_scale_set(pr->video, 1); - - emotion_object_file_set(pr->video, "cdda:/1"); - emotion_object_play_set(pr->video, 1); - - pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); - pr->media_fade_in_start = ecore_time_get(); + + { + int fd; + + fd = open(pr->device, O_RDONLY | O_NONBLOCK); + if (fd >= 0) + { + int ret; + struct cdrom_tochdr hd; + + ret = ioctl(fd, CDROMREADTOCHDR, &hd); + if (ret == 0) + { + int i; + + pr->track_num = hd.cdth_trk1; + printf("hd->cdth_trk0 = %i, hd->cdth_trk1 = %i\n", + (int)hd.cdth_trk0, (int)hd.cdth_trk1); + for (i = 1; i <= hd.cdth_trk1; i++) + { + struct cdrom_tocentry ent; + + ent.cdte_track = i; + ent.cdte_format = CDROM_MSF; + ret = ioctl(fd, CDROMREADTOCENTRY, &ent); + if (ret == 0) + { + int sec; + + sec = ent.cdte_addr.msf.minute * 60; + sec += ent.cdte_addr.msf.second; + printf("TRACK %i = %i sec [f: %i]\n", i, sec, + (int)ent.cdte_addr.msf.frame); + } + } + } + close(fd); + } + } + { + char buf[256]; + + snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); + emotion_object_file_set(pr->video, buf); + emotion_object_play_set(pr->video, 1); + } return pr; } @@ -102,10 +125,7 @@ Elation_Module_Private *pr; pr = em->data; - evas_object_del(pr->background1); - evas_object_del(pr->background2); evas_object_del(pr->video); - if (pr->media_fade_in_timer) ecore_timer_del(pr->media_fade_in_timer); free(pr); } @@ -113,67 +133,13 @@ resize(Elation_Module *em) { Elation_Module_Private *pr; - Evas_Coord x, y, w, h, ww, hh; - double ratio; - int vw, vh; + Evas_Coord w, h; pr = em->data; evas_output_viewport_get(em->info->evas, NULL, NULL, &w, &h); - ww = w; - hh = h; - - emotion_object_size_get(pr->video, &vw, &vh); - ratio = emotion_object_ratio_get(pr->video); - if (ratio > 0.0) - { - x = 0; - y = (h - (w / ratio)) / 2; - if (y < 0) - { - y = 0; - x = (w - (h * ratio)) / 2; - w = h * ratio; - } - else - h = w / ratio; - evas_object_move(pr->video, x, y); - evas_object_resize(pr->video, w, h); - } - else - { - if (vh > 1) - { - ratio = (double)vw / (double)vh; - x = 0; - y = (h - (w / ratio)) / 2; - if (y < 0) - { - y = 0; - x = (w - (h * ratio)) / 2; - w = h * ratio; - } - else - h = w / ratio; - } - evas_object_move(pr->video, 0, 0); - evas_object_resize(pr->video, w, h); - } - - if (w == ww) - { - evas_object_move(pr->background1, 0, 0); - evas_object_resize(pr->background1, ww, y); - evas_object_move(pr->background2, 0, y + h); - evas_object_resize(pr->background2, ww, hh - h - y); - } - else - { - evas_object_move(pr->background1, 0, 0); - evas_object_resize(pr->background1, x, hh); - evas_object_move(pr->background2, x + w, 0); - evas_object_resize(pr->background2, ww - w - x, hh); - } + evas_object_move(pr->video, 0, 0); + evas_object_resize(pr->video, w, h); } static void @@ -182,9 +148,6 @@ Elation_Module_Private *pr; pr = em->data; - evas_object_show(pr->background1); - evas_object_show(pr->background2); - evas_object_show(pr->video); } static void @@ -193,9 +156,6 @@ Elation_Module_Private *pr; pr = em->data; - evas_object_hide(pr->background1); - evas_object_hide(pr->background2); - evas_object_hide(pr->video); } static void @@ -225,56 +185,43 @@ switch (action) { case ELATION_ACT_NEXT: - if (pr->menu_visible) + pr->track++; + if (pr->track >= pr->track_num) pr->track = 0; + printf("next to %i\n", pr->track); { + char buf[256]; + + snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); + emotion_object_file_set(pr->video, buf); + emotion_object_play_set(pr->video, 1); } - else - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_NEXT); break; case ELATION_ACT_PREV: - if (pr->menu_visible) + pr->track--; + if (pr->track < 0) pr->track = pr->track_num - 1; { + char buf[256]; + + snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); + emotion_object_file_set(pr->video, buf); + emotion_object_play_set(pr->video, 1); } - else - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_PREV); break; case ELATION_ACT_SELECT: - if (pr->menu_visible) - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_SELECT); + if (emotion_object_play_get(pr->video)) + emotion_object_play_set(pr->video, 0); else - { - if (emotion_object_play_get(pr->video)) - emotion_object_play_set(pr->video, 0); - else - emotion_object_play_set(pr->video, 1); - } + emotion_object_play_set(pr->video, 1); break; case ELATION_ACT_EXIT: - { - em->info->func.action_broadcast(ELATION_ACT_DISK_EJECT); - em->shutdown(em); - } + em->info->func.action_broadcast(ELATION_ACT_DISK_EJECT); + em->shutdown(em); break; case ELATION_ACT_UP: - if (pr->menu_visible) - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_UP); - else - { - // FIXME: bring up config menu - } break; case ELATION_ACT_DOWN: - if (pr->menu_visible) - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_DOWN); - else - { - // FIXME: bring up config menu - } break; case ELATION_ACT_LEFT: - if (pr->menu_visible) - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_LEFT); - else { double pos; @@ -283,9 +230,6 @@ } break; case ELATION_ACT_RIGHT: - if (pr->menu_visible) - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_RIGHT); - else { double pos; @@ -294,62 +238,23 @@ } break; case ELATION_ACT_MENU: - if (pr->menu_visible) - { - // FIXME: bring up config menu - } - else - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_MENU1); break; case ELATION_ACT_INFO: - if (pr->menu_visible) - { - // FIXME: bring up config menu - } - else - { - } break; case ELATION_ACT_INPUT: - if (pr->menu_visible) - { - // FIXME: bring up config menu - } - else - { - } break; case ELATION_ACT_PLAY: - if (pr->menu_visible) - { - emotion_object_event_simple_send(pr->video, EMOTION_EVENT_NEXT); - } - else - { - emotion_object_play_set(pr->video, 1); - } + emotion_object_play_set(pr->video, 1); break; case ELATION_ACT_PAUSE: - if (pr->menu_visible) - { - } + if (emotion_object_play_get(pr->video)) + emotion_object_play_set(pr->video, 0); else - { - if (emotion_object_play_get(pr->video)) - emotion_object_play_set(pr->video, 0); - else - emotion_object_play_set(pr->video, 1); - } + emotion_object_play_set(pr->video, 1); break; case ELATION_ACT_STOP: - if (pr->menu_visible) - { - } - else - { - emotion_object_play_set(pr->video, 0); - emotion_object_position_set(pr->video, 0.0); - } + emotion_object_play_set(pr->video, 0); + emotion_object_position_set(pr->video, 0.0); break; default: break; @@ -367,15 +272,7 @@ em = data; pos = emotion_object_position_get(obj); len = emotion_object_play_length_get(obj); -} - -static void -frame_resize_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elation_Module *em; - - em = data; - em->resize(em); +// printf("EL decode %3.3f / %3.3f\n", pos, len); } static void @@ -387,6 +284,7 @@ em = data; pos = emotion_object_position_get(obj); len = emotion_object_play_length_get(obj); + printf("EL length change %3.3f / %3.3f\n", pos, len); } static void @@ -397,22 +295,18 @@ em = data; pr = em->data; + printf("EL video stop\n"); // emotion_object_position_set(pr->video, 0.0); // emotion_object_play_set(pr->video, 1); -} - -static void -button_num_change_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elation_Module *em; - Elation_Module_Private *pr; - - em = data; - pr = em->data; - if (emotion_object_spu_button_count_get(pr->video) > 0) - pr->menu_visible = 1; - else - pr->menu_visible = 0; + pr->track++; + if (pr->track >= pr->track_num) pr->track = 0; + { + char buf[256]; + + snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); + emotion_object_file_set(pr->video, buf); + emotion_object_play_set(pr->video, 1); + } } static void @@ -454,31 +348,6 @@ } static void -ref_change_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elation_Module *em; - Elation_Module_Private *pr; - - em = data; - pr = em->data; - printf("EL video ref to: \"%s\" %i\n", - emotion_object_ref_file_get(pr->video), - emotion_object_ref_num_get(pr->video)); -} - -static void -button_change_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elation_Module *em; - Elation_Module_Private *pr; - - em = data; - pr = em->data; - printf("EL video selected spu button: %i\n", - emotion_object_spu_button_get(pr->video)); -} - -static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev; @@ -510,24 +379,3 @@ else if (!strcmp(ev->keyname, "k")) action = ELATION_ACT_SKIP; em->action(em, action); } - -static int -media_fade_in_timer_cb(void *data) -{ - Elation_Module *em; - Elation_Module_Private *pr; - int a; - double t; - - em = data; - pr = em->data; - t = ecore_time_get() - pr->media_fade_in_start; - a = (t * 255) / 10.0; - if (a > 255) a = 255; - evas_object_color_set(pr->background1, 0, 0, 0, a); - evas_object_color_set(pr->background2, 0, 0, 0, a); - evas_object_color_set(pr->video, 255, 255, 255, a); - if (a < 255) return 1; - pr->media_fade_in_timer = NULL; - return 0; -} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_disk.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- elation_disk.c 24 Jul 2004 05:19:33 -0000 1.2 +++ elation_disk.c 24 Jul 2004 07:19:48 -0000 1.3 @@ -83,7 +83,7 @@ em->unfocus = unfocus; em->action = action; - pr->device = strdup("/dev/dvd"); + pr->device = strdup("/dev/cdrom"); { int fds_in[2], fds_out[2]; pid_t pid; @@ -263,7 +263,7 @@ int i; printf("eject disk!\n"); - for (i = 0; i < 5; i++) + for (i = 0; i < 10; i++) { if (ioctl(fd, CDROMEJECT, 0) == 0) break; perror("ioctl"); |
From: <enl...@li...> - 2004-07-24 10:44:39
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/src/modules Modified Files: elation_cd.c elation_dvd.c elation_media.c elation_vcd.c Log Message: cd module does more =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_cd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- elation_cd.c 24 Jul 2004 07:19:47 -0000 1.2 +++ elation_cd.c 24 Jul 2004 10:44:23 -0000 1.3 @@ -20,6 +20,7 @@ int track; int track_num; Evas_Object *video; + Evas_Object *overlay; }; static void shutdown(Elation_Module *em); @@ -37,9 +38,8 @@ static void progress_change_cb(void *data, Evas_Object *obj, void *event_info); static void channels_change_cb(void *data, Evas_Object *obj, void *event_info); static void key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static int media_play_timer_cb(void *data); -static int media_fade_in_timer_cb(void *data); - +static void new_track(Elation_Module *em, int track); + void * init(Elation_Module *em) { @@ -56,6 +56,8 @@ em->focus = focus; em->unfocus = unfocus; em->action = action; + + em->data = pr; pr->device = strdup("/dev/cdrom"); @@ -108,14 +110,12 @@ close(fd); } } - { - char buf[256]; - - snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); - emotion_object_file_set(pr->video, buf); - emotion_object_play_set(pr->video, 1); - } + pr->overlay = edje_object_add(em->info->evas); + edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "cd"); + edje_object_signal_emit(pr->overlay, "media", "1"); + + new_track(em, 0); return pr; } @@ -126,6 +126,7 @@ pr = em->data; evas_object_del(pr->video); + evas_object_del(pr->overlay); free(pr); } @@ -140,6 +141,9 @@ evas_object_move(pr->video, 0, 0); evas_object_resize(pr->video, w, h); + + evas_object_move(pr->overlay, 0, 0); + evas_object_resize(pr->overlay, w, h); } static void @@ -148,6 +152,7 @@ Elation_Module_Private *pr; pr = em->data; + evas_object_show(pr->overlay); } static void @@ -156,6 +161,7 @@ Elation_Module_Private *pr; pr = em->data; + evas_object_hide(pr->overlay); } static void @@ -185,27 +191,10 @@ switch (action) { case ELATION_ACT_NEXT: - pr->track++; - if (pr->track >= pr->track_num) pr->track = 0; - printf("next to %i\n", pr->track); - { - char buf[256]; - - snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); - emotion_object_file_set(pr->video, buf); - emotion_object_play_set(pr->video, 1); - } + new_track(em, pr->track + 1); break; case ELATION_ACT_PREV: - pr->track--; - if (pr->track < 0) pr->track = pr->track_num - 1; - { - char buf[256]; - - snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); - emotion_object_file_set(pr->video, buf); - emotion_object_play_set(pr->video, 1); - } + new_track(em, pr->track - 1); break; case ELATION_ACT_SELECT: if (emotion_object_play_get(pr->video)) @@ -298,15 +287,7 @@ printf("EL video stop\n"); // emotion_object_position_set(pr->video, 0.0); // emotion_object_play_set(pr->video, 1); - pr->track++; - if (pr->track >= pr->track_num) pr->track = 0; - { - char buf[256]; - - snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); - emotion_object_file_set(pr->video, buf); - emotion_object_play_set(pr->video, 1); - } + new_track(em, pr->track + 1); } static void @@ -379,3 +360,38 @@ else if (!strcmp(ev->keyname, "k")) action = ELATION_ACT_SKIP; em->action(em, action); } + +static void +new_track(Elation_Module *em, int track) +{ + Elation_Module_Private *pr; + char buf[256]; + + pr = em->data; + pr->track = track; + while (pr->track >= pr->track_num) pr->track -= pr->track_num; + while (pr->track < 0) pr->track += pr->track_num; + + snprintf(buf, sizeof(buf), "cdda:/%i", pr->track + 1); + emotion_object_file_set(pr->video, buf); + emotion_object_play_set(pr->video, 1); + snprintf(buf, sizeof(buf), "%i", pr->track + 1); + edje_object_part_text_set(pr->overlay, + "track_number", + buf); + edje_object_part_text_set(pr->overlay, + "track_title", + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_TITLE)); + edje_object_part_text_set(pr->overlay, + "track_artist", + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_ARTIST)); + edje_object_part_text_set(pr->overlay, + "track_album", + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_ALBUM)); + printf("track %i, %s - %s - %s\n", + pr->track, + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_ARTIST), + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_ALBUM), + emotion_object_meta_info_get(pr->video, EMOTION_META_INFO_TRACK_TITLE) + ); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_dvd.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- elation_dvd.c 24 Jul 2004 05:19:33 -0000 1.6 +++ elation_dvd.c 24 Jul 2004 10:44:23 -0000 1.7 @@ -87,7 +87,7 @@ emotion_object_smooth_scale_set(pr->video, 1); - emotion_object_file_set(pr->video, "dvd:/"); + emotion_object_file_set(pr->video, "dvd://"); emotion_object_play_set(pr->video, 1); pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_media.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_media.c 24 Jul 2004 05:19:33 -0000 1.1 +++ elation_media.c 24 Jul 2004 10:44:23 -0000 1.2 @@ -53,7 +53,7 @@ em->action = action; pr->overlay = edje_object_add(em->info->evas); - edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "dvd"); + edje_object_file_set(pr->overlay, PACKAGE_DATA_DIR"/data/theme.eet", "media"); edje_object_signal_emit(pr->overlay, "media", "0"); return pr; @@ -207,6 +207,7 @@ evas_object_raise(pr->overlay); if (new_em) { + new_em->resize(new_em); new_em->show(new_em); new_em->focus(new_em); } @@ -219,6 +220,7 @@ evas_object_raise(pr->overlay); if (new_em) { + new_em->resize(new_em); new_em->show(new_em); new_em->focus(new_em); } @@ -231,6 +233,7 @@ evas_object_raise(pr->overlay); if (new_em) { + new_em->resize(new_em); new_em->show(new_em); new_em->focus(new_em); } @@ -243,6 +246,7 @@ evas_object_raise(pr->overlay); if (new_em) { + new_em->resize(new_em); new_em->show(new_em); new_em->focus(new_em); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/src/modules/elation_vcd.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- elation_vcd.c 24 Jul 2004 05:19:33 -0000 1.1 +++ elation_vcd.c 24 Jul 2004 10:44:23 -0000 1.2 @@ -87,7 +87,7 @@ emotion_object_smooth_scale_set(pr->video, 1); - emotion_object_file_set(pr->video, "vcd:/"); + emotion_object_file_set(pr->video, "vcd://"); emotion_object_play_set(pr->video, 1); pr->media_fade_in_timer = ecore_timer_add(1.0 / 30.0, media_fade_in_timer_cb, em); |
From: <enl...@li...> - 2004-07-24 10:45:00
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/data Modified Files: theme.edc theme.eet Log Message: cd module does more =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/data/theme.edc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- theme.edc 18 Jul 2004 08:04:21 -0000 1.1 +++ theme.edc 24 Jul 2004 10:44:23 -0000 1.2 @@ -25,7 +25,7 @@ } } group { - name: "dvd"; + name: "media"; parts { part { name: "disk"; @@ -191,4 +191,132 @@ } } } + group { + name: "cd"; + parts { + part { + name: "disk"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 230 130; + max: 230 130; + align: 1.0 1.0; + rel1 { + relative: 0.0 0.0; + offset: 50 50; + } + rel2 { + relative: 0.0 0.0; + offset: 50 50; + } + image { + normal: "disk.png"; + } + } + } + part { + name: "track_number"; + type: TEXT; + description { + state: "default" 0.0; + align: 0.0 1.0; + rel1 { + relative: 1.0 0.0; + offset: -50 50; + } + rel2 { + relative: 1.0 0.0; + offset: -50 50; + } + color: 0 0 0 255; + text { + text: "00"; + font: "Vera Bold"; + size: 75; + align: 0.0 0.0; + min: 1 1; + } + } + } + part { + name: "track_title"; + type: TEXT; + description { + state: "default" 0.0; + align: 0.0 1.0; + rel1 { + to_y: "disk"; + relative: 0.0 1.0; + offset: 50 0; + } + rel2 { + to_y: "disk"; + relative: 1.0 1.0; + offset: -50 0; + } + color: 0 0 0 255; + text { + text: "Title"; + font: "Vera Bold"; + size: 24; + align: 0.0 0.0; + min: 0 1; + } + } + } + part { + name: "track_artist"; + type: TEXT; + description { + state: "default" 0.0; + align: 0.0 1.0; + rel1 { + to_y: "track_title"; + relative: 0.0 1.0; + offset: 50 0; + } + rel2 { + to_y: "track_title"; + relative: 1.0 1.0; + offset: -50 0; + } + color: 0 0 0 255; + text { + text: "Artist"; + font: "Vera Bold"; + size: 24; + align: 0.0 0.0; + min: 0 1; + } + } + } + part { + name: "track_album"; + type: TEXT; + description { + state: "default" 0.0; + align: 0.0 1.0; + rel1 { + to_y: "track_artist"; + relative: 0.0 1.0; + offset: 50 0; + } + rel2 { + to_y: "track_artist"; + relative: 1.0 1.0; + offset: -50 0; + } + color: 0 0 0 255; + text { + text: "Album"; + font: "Vera Bold"; + size: 24; + align: 0.0 0.0; + min: 0 1; + } + } + } + } + } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/data/theme.eet,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 Binary files /tmp/cvsqMZJDQ and /tmp/cvsR5K7ua differ |
From: <enl...@li...> - 2004-08-31 06:48:58
|
Enlightenment CVS committal Author : raster Project : e17 Module : apps/elation Dir : e17/apps/elation/data Modified Files: Makefile.am Removed Files: theme.eet Log Message: theme src... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/elation/data/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 18 Jul 2004 08:04:21 -0000 1.2 +++ Makefile.am 31 Aug 2004 06:48:51 -0000 1.3 @@ -1,3 +1,6 @@ +EDJE_CC = edje_cc $(EDJE_FLAGS) +EDJE_FLAGS = -v + AUTOMAKE_OPTIONS = 1.4 foreign MAINTAINERCLEANFILES = Makefile.in @@ -5,6 +8,24 @@ filesdir = $(datadir)/elation/data files_DATA = \ theme.eet \ +Vera.ttf \ +VeraBd.ttf \ +bg.png \ +disk.png + +EXTRA_DIST = \ +Vera.ttf \ +VeraBd.ttf \ +bg.png \ +disk.png \ theme.edc -EXTRA_DIST = $(files_DATA) +theme.eet: Makefile + $(EDJE_CC) $(EDJE_FLAGS) \ + $(top_srcdir)/data/theme.edc \ + $(top_builddir)/data/theme.eet + +clean-local: + rm -f *.eet + + |