안녕하세요 . 타이젠 어플리케이션 개발에 있어 이제 막 시작하는 초보 개발자입니다.
질의 사항은 기본적으로 샘플로 제공되는 cairoEvasGL 예제를
워치 어플리케이션으로 사용할 수 있는지에 대한 것입니다.
일단 기본적으로 (wearable 2.3.1, acceleration on, emulator에서 확인)
1 . cairoEvasGL 샘플 프로젝트에서 main의 이벤트 핸들러 및 이름을 워치어플리케이션과 동일하게 아래와 같이 변경하였습니다.
watch_app_lifecycle_callback_s, watch_app_add_event_handler , watch_app_main
2. manifest 파일을 워치어플리케이션과 동일하게 아래와 같이 변경하엿습니다.
<watch-application ambient-support="true" appid="org.example.cairoevasgl" exec="cairoevasgl" hw-acceleration="on">
3. app_create에서 cairo_evasgl_drawing(ad) 다음에
ecore_animator_frametime_set(1);
ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);
ad->ani = ecore_animator_add(_animate_cb, (void *)ad->img);
evas_object_data_set(ad->img, "ani", ad->ani);
ecore_animator_freeze(ad->ani);
같이 애니메이션을 등록하고 app_pause()와 app_resume()에서 각각 ecore_animator_freeze(ad->ani); ecore_animator_thaw(ad->ani); 를
설정하였습니다.
4. 이 상태에서 등록되어 있는 _animate_cb(), app_pause(), app_resume(), cairo_drawing() 에 로그를 추가하여 출력해 보았습니다.
이 때 라이프사이클이 정상적으로 app_create -> app_control-> app_resume -> _animate_cb 이 출력되는 것은 확인하였으나
cairo_drawing()에 적용한 로그는 출력되지 않습니다.
5. 문제는 "화면에 아무것도 출력이 되지 않습니다."
물론 cairo_evasgl_drawing()에서 elm_win_util_standard_add(PACKAGE, PACKAGE);에서
watch_app_get_elm_win(&ad->win); 변경을 하였고 포인터 등이 정상적으로 할당되어있는 것도 확인하였습니다.
저의 짧은 생각에는 watch_app_get_elm_win으로 할당한 ad->win에 evas_object_image_filled_add()로 붙인
ad->img에서 콜백으로 등록시키는 함수인 evas_object_image_pixels_get_callback_set() 이 작동을안하는 것 같습니다.
(watch_app_get_elm_win과 elm_win_util_standard_add 의 차이 같기도 합니다.... )
혹시 이런 경우에 대해 해답을 가지신 분이나 해결방법을 아시는 분은 답변 부탁드리겠습니다.
감사합니다.