1. fixed lcd tearing effect with drmModePageFlip
authorPark Yong Chul <yc1216.park@samsung.com>
Thu, 17 Jan 2013 11:28:02 +0000 (20:28 +0900)
committerPark Yong Chul <yc1216.park@samsung.com>
Fri, 18 Jan 2013 07:11:16 +0000 (16:11 +0900)
2. add dlog message system - default logging printf
3. change flora license url
4. modified default input device node for systemd - event1

Change-Id: I7e8caaf76ac6581eabb07b421305f41a74140664
Signed-off-by: Park Yong Chul <yc1216.park@samsung.com>
21 files changed:
LICENSE.Flora
include/chg_battery.h
include/chg_common.h
include/chg_drmd.h
include/chg_env.h
include/chg_fb.h
include/chg_fbd.h
include/chg_misc.h
include/chg_png.h
include/chg_power.h
packaging/charging-animation.spec
run-chg-ani.in
src/chg_battery.c
src/chg_drmd.c
src/chg_env.c
src/chg_fb.c
src/chg_fbd.c
src/chg_main.c
src/chg_misc.c
src/chg_png.c
src/chg_power.c

index 917b21e..9c95663 100755 (executable)
@@ -2,7 +2,7 @@ Flora License
 
 Version 1.0, May, 2012
 
-http://www.tizenopensource.org/license
+http://floralicense.org/license/
 
 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
@@ -196,7 +196,7 @@ identification within third-party archives.
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
 
-       http://www.tizenopensource.org/license
+       http://floralicense.org/license/
 
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
index e973d90..8e134b1 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
index b11c93a..a83fa70 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,11 +17,25 @@ limitations under the License.
 #ifndef __CHG_COMMON_H__
 #define __CHG_COMMON_H__
 
-
 #include <stdio.h>
+#include <errno.h>
+
+#define DEBUG_MSG      printf
+#if 0
+#define CHG_LOG_TAG "CHG_ANI"
+#include <dlog.h>
+#include <time.h>
+#include <sys/time.h>
+#include <libgen.h>
+#include <stdio.h>
+#include <errno.h>
 
-#define LOGD                   printf
-#define FILE_IO_BUF_SIZE       128
+#define DEBUG_MSG(format,args...) \
+do {\
+       LOG(LOG_DEBUG, CHG_LOG_TAG, "[%s:%d] "format"", __func__, __LINE__, ##args);\
+}while(0)
+#endif
 
+#define FILE_IO_BUF_SIZE       128
 
 #endif /* __CHG_COMMON_H__ */
index 3accd9e..fd7d4ef 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -40,18 +40,26 @@ typedef struct _st_drmdi {
        drmModeCrtcPtr crtc;
 
        /*framebuffer*/
-       unsigned int fb_id;
-       struct kms_bo *bo;
+       unsigned int fb_id[2];
+       struct kms_bo *bo[2];
        unsigned char *fb_buf;
+       unsigned char *fb_buf2;
        unsigned int bo_stride;
        unsigned int bo_handle;
        unsigned int bo_width, bo_height;
 } st_drmdi;
 
+enum {
+       FRAME_BUFFER1 = 0,
+       FRAME_BUFFER2
+};
 
+extern st_drmdi s_drmdi;
+extern drmEventContext evctx;
 extern int drmd_open(st_drmdi *drmdi);
 extern void drmd_close(st_drmdi *drmdi);
 extern int drmd_lcd_on(st_drmdi *drmdi);
 extern int drmd_lcd_off(st_drmdi *drmdi);
+extern void page_flip_handler(int fd, unsigned int frame, unsigned int sec, unsigned int usec, void * data);
 
 #endif /* __CHG_DRMD_H__ */
index 2c6618f..588e100 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
index a3dc4f9..492a1ce 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -24,7 +24,8 @@ enum fb_dev_t {
 };
 
 typedef struct _FbInfo {
-       unsigned char *buf;
+       unsigned char *buf, *buf2;
+       unsigned int current_fb_id;
        int w;
        int h;
        int sz;
index 4b1820d..1d4a3e2 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
index 90c82f5..e2f400c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
index ebb9aff..f781a61 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -19,11 +19,13 @@ limitations under the License.
 
 
 #include "chg_fb.h"
+#include "chg_drmd.h"
 
 extern int png_img_width;
 extern int png_img_height;
-extern int png_img_width_batt_normal;
-extern int png_img_height_batt_normal;
+/* clear screen based on img size */
+//extern int png_img_width_batt_normal;
+//extern int png_img_height_batt_normal;
 extern int read_png_file(char *file_name);
 extern void draw_png_img_xy(FbInfo *fbi, int x1, int y1);
 extern void release_png_res(void);
index 49ce3bb..50985da 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
index 2d10b5d..0db83ee 100755 (executable)
@@ -1,7 +1,7 @@
 Name:       charging-animation
 Summary:    charging-animation
 ExclusiveArch:  %{arm}
-Version:    0.0.5
+Version:    0.0.6
 Release:    1
 Group:      misc
 License:    Flora Software License
index 7b2984b..4ccd869 100755 (executable)
@@ -46,9 +46,12 @@ do_charging_ani() {
 
 charging_boot=`grep charger_detect_boot /proc/cmdline`
 if [ "z$charging_boot" != "z" ]; then
-       do_charging_ani
+
 # for logs
        mount -a
-       syslogd -O /opt/var/log/messages-chrg
+       syslogd -b 5 -O  /opt/var/log/messages-chrg
        klogd
+
+       do_charging_ani
+
 fi
index 8b95d9d..ca20ecf 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 2012,  2013 Samsung Electronics Co., Ltd
+Copyright 2012-2013 Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -149,9 +149,9 @@ void show_batt_info(void)
        bat_vol = read_int_from_file(chg_env_str[EN_ENV_BATT_VOL_NOW]);
        bat_chg_now = read_int_from_file(chg_env_str[EN_ENV_BATT_CHG_NOW]);
 
-       LOGD("[capacity] %d\n", bat_soc);
-       LOGD("[voltage_now] %d\n", bat_vol);
-       LOGD("[charge_now] %d\n", bat_chg_now);
+       DEBUG_MSG("[capacity] %d\n", bat_soc);
+       DEBUG_MSG("[voltage_now] %d\n", bat_vol);
+       DEBUG_MSG("[charge_now] %d\n", bat_chg_now);
 }
 
 
index dae3cb9..ab1a6ee 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -22,6 +22,7 @@ limitations under the License.
 #include "chg_drmd.h"
 #include "chg_env.h"
 
+drmEventContext evctx;
 /*-----------------------------------------------------------------------------
   find_connector()
  ----------------------------------------------------------------------------*/
@@ -43,7 +44,7 @@ static int find_connector(st_drmdi *drmdi, int type)
        for(i=0; i<res_mode->count_connectors; i++) {
                connector = drmModeGetConnector(fd, res_mode->connectors[i]);
                if(connector == NULL) {
-                       LOGD("[find_connector] connector is NULL)\n");
+                       DEBUG_MSG("[find_connector] connector is NULL)\n");
                        continue;
                }
                if(connector->connector_type == type)
@@ -54,12 +55,12 @@ static int find_connector(st_drmdi *drmdi, int type)
        }
 
        if(!connector) {
-               LOGD("[find_connector] Cannot find connector:%d\n", type);
+               DEBUG_MSG("[find_connector] Cannot find connector:%d\n", type);
                return -1;
        }
 
        if(connector->connection != DRM_MODE_CONNECTED) {
-               LOGD("[find_connector] connector is not connected (%d)\n",
+               DEBUG_MSG("[find_connector] connector is not connected (%d)\n",
                        (int)connector->connection);
                return -1;
        }
@@ -67,14 +68,14 @@ static int find_connector(st_drmdi *drmdi, int type)
        /* find default encoder */
        encoder = drmModeGetEncoder(fd, connector->encoder_id);
        if(!encoder) {
-               LOGD("[find_connector] Cannot get encoder:%d\n", type);
+               DEBUG_MSG("[find_connector] Cannot get encoder:%d\n", type);
                return -1;
        }
 
        /* find default crtc */
        crtc = drmModeGetCrtc(fd, encoder->crtc_id);
        if(!crtc) {
-               LOGD("[find_connector] Cannot get CRTC\n");
+               DEBUG_MSG("[find_connector] Cannot get CRTC\n");
                return -1;
        }
 
@@ -88,7 +89,7 @@ static int find_connector(st_drmdi *drmdi, int type)
 /*-----------------------------------------------------------------------------
   create_framebuffer()
  ----------------------------------------------------------------------------*/
-static int create_framebuffer(st_drmdi *drmdi)
+static int create_framebuffer(st_drmdi *drmdi,int i)
 {
        unsigned int attrs[]={
                KMS_WIDTH,   0,
@@ -101,20 +102,20 @@ static int create_framebuffer(st_drmdi *drmdi)
        attrs[1] = drmdi->connector->modes[0].hdisplay;
        attrs[3] = drmdi->connector->modes[0].vdisplay;
 
-       if(kms_bo_create(drmdi->kms, attrs, &drmdi->bo)) {
-               LOGD("[create_framebuffer] Cannot create kms bo\n");
+       if(kms_bo_create(drmdi->kms, attrs, &drmdi->bo[i])) {
+               DEBUG_MSG("[create_framebuffer] Cannot create kms bo\n");
                return -1;
        }
 
        drmdi->bo_width = drmdi->connector->modes[0].hdisplay;
        drmdi->bo_height = drmdi->connector->modes[0].vdisplay;
-       kms_bo_get_prop(drmdi->bo, KMS_PITCH, &drmdi->bo_stride);
-       kms_bo_get_prop(drmdi->bo, KMS_HANDLE, &drmdi->bo_handle);
+       kms_bo_get_prop(drmdi->bo[i], KMS_PITCH, &drmdi->bo_stride);
+       kms_bo_get_prop(drmdi->bo[i], KMS_HANDLE, &drmdi->bo_handle);
 
        /* add drm framebuffer */
        if(drmModeAddFB(drmdi->fd, drmdi->bo_width, drmdi->bo_height,
-               24, 32, drmdi->bo_stride, drmdi->bo_handle, &drmdi->fb_id)) {
-               LOGD("[create_framebuffer] Cannot add drm fb\n");
+               24, 32, drmdi->bo_stride, drmdi->bo_handle, &drmdi->fb_id[i])) {
+               DEBUG_MSG("[create_framebuffer] Cannot add drm fb\n");
                return -1;
        }
 
@@ -128,11 +129,11 @@ static int set_drm_mode(st_drmdi *drmdi)
 {
        if(drmModeSetCrtc(drmdi->fd
                        , drmdi->crtc->crtc_id
-                       , drmdi->fb_id
+                       , drmdi->fb_id[0]
                        , 0, 0
                        , &drmdi->connector->connector_id, 1
                        , drmdi->connector->modes)) {
-               LOGD("[set_drm_mode] Cannot set drm mode\n");
+               DEBUG_MSG("[set_drm_mode] Cannot set drm mode\n");
                return -1;
        }
 
@@ -144,6 +145,7 @@ static int set_drm_mode(st_drmdi *drmdi)
  ----------------------------------------------------------------------------*/
 static void free_drm_res(st_drmdi *drmdi)
 {
+       int i = 0;
        if(drmdi->connector)
                drmModeFreeConnector(drmdi->connector);
 
@@ -156,11 +158,13 @@ static void free_drm_res(st_drmdi *drmdi)
        if(drmdi->res_mode)
                drmModeFreeResources(drmdi->res_mode);
 
-       if(drmdi->fb_id)
-               drmModeRmFB(drmdi->fd, drmdi->fb_id);
 
-       if(drmdi->bo)
-               kms_bo_destroy(&drmdi->bo);
+       for( i = 0 ;i <FRAME_BUFFER2 ; i++) {
+               if(drmdi->fb_id[i])
+                       drmModeRmFB(drmdi->fd, drmdi->fb_id[i]);
+               if(drmdi->bo[i])
+                       kms_bo_destroy(&drmdi->bo[i]);
+       }
 
        if(drmdi->kms)
                kms_destroy(&drmdi->kms);
@@ -168,17 +172,24 @@ static void free_drm_res(st_drmdi *drmdi)
        drmClose(drmdi->fd);
 }
 
+void page_flip_handler(int fd, unsigned int frame,
+                 unsigned int sec, unsigned int usec, void *data)
+{
+//     DEBUG_MSG("page_flip_handler~\n");
+       return;
+}
+
 /*-----------------------------------------------------------------------------
   drmd_open()
  ----------------------------------------------------------------------------*/
 int drmd_open(st_drmdi *drmdi)
 {
        drm_magic_t magic;
-       void *ptr;
+       void *ptr, *ptr2;
        int ret;
 
        if (drmdi == NULL) {
-               LOGD("[drmd_open] drmdi is NULL\n");
+               DEBUG_MSG("[drmd_open] drmdi is NULL\n");
                return -1;
        }
 
@@ -186,70 +197,125 @@ int drmd_open(st_drmdi *drmdi)
 
        drmdi->fd = drmOpen(chg_env_str[EN_ENV_DEV_DRM_NAME], NULL);
        if(drmdi->fd<0) {
-               LOGD("[drmd_open] Cannot open drm:%s\n",
+               DEBUG_MSG("[drmd_open] Cannot open drm:%s\n",
                        chg_env_str[EN_ENV_DEV_DRM_NAME]);
                return -1;
        }
+       else {
+               DEBUG_MSG("[drmd_open] drmdi->fd : %d ",drmdi->fd);
+       }
 
        drmdi->driver_name = drmGetDeviceNameFromFd(drmdi->fd);
-       LOGD("[drmd_open] Init DRM(name:%s, fd:%d)...OK\n",
+       DEBUG_MSG("[drmd_open] Init DRM(name:%s, fd:%d)...OK\n",
                drmdi->driver_name, drmdi->fd);
 
        /* Auth DRM */
        if(drmGetMagic(drmdi->fd, &magic)) {
-               LOGD("[drmd_open] Cannot get magic\n");
+               DEBUG_MSG("[drmd_open] Cannot get magic\n");
                goto drm_err_exit;
        }
 
        if(drmAuthMagic(drmdi->fd, magic)) {
-               LOGD("[drmd_open] Cannot auth magic\n");
+               DEBUG_MSG("[drmd_open] Cannot auth magic\n");
                goto drm_err_exit;
        }
 
        /* Create KMS */
        if(kms_create(drmdi->fd, &drmdi->kms)) {
-               LOGD("[drmd_open] Cannot create kms\n");
+               DEBUG_MSG("[drmd_open] Cannot create kms\n");
                goto drm_err_exit;
        }
 
        /* Get drmmode resource */
        drmdi->res_mode = drmModeGetResources(drmdi->fd);
        if(!drmdi->res_mode) {
-               LOGD("[drmd_open] Cannot get drmmode resources\n");
+               DEBUG_MSG("[drmd_open] Cannot get drmmode resources\n");
                goto drm_err_exit;
        }
 
        ret = find_connector(drmdi, DRM_MODE_CONNECTOR_LVDS);
        if(ret < 0) {
-               LOGD("[drmd_open] Cannot get default(LVDS) connector\n");
+               DEBUG_MSG("[drmd_open] Cannot get default(LVDS) connector\n");
                goto drm_err_exit;
        }
 
        /* Create framebuffer */
-       ret = create_framebuffer(drmdi);
+       ret = create_framebuffer(drmdi, FRAME_BUFFER1);
        if(ret < 0) {
-               LOGD("[drmd_open] Cannot create frame buffer\n");
+               DEBUG_MSG("[drmd_open] Cannot create frame buffer\n");
                goto drm_err_exit;
        }
 
-       if (kms_bo_map(drmdi->bo, &ptr)) {
-               LOGD("[drmd_open] kms_bo_map() failed. \n");
+       if (kms_bo_map(drmdi->bo[FRAME_BUFFER1], &ptr)) {
+               DEBUG_MSG("[drmd_open] kms_bo_map() failed. \n");
                goto drm_err_exit;
        }
        drmdi->fb_buf = ptr;
        drmdi->dpms_mode = DPMSModeOn;
        memset(ptr, 0x00, drmdi->bo_stride * drmdi->bo_height);
+       kms_bo_unmap(drmdi->bo[FRAME_BUFFER1]);
 
        /* Set mode */
        ret = set_drm_mode(drmdi);
        if(ret < 0) {
-               LOGD("[drmd_open] Cannot set drm mode\n");
+               DEBUG_MSG("[drmd_open] Cannot set drm mode\n");
+               goto drm_err_exit;
+       }
+
+       /* Create framebuffer 2 */
+       ret = create_framebuffer(drmdi, FRAME_BUFFER2);
+       if(ret < 0) {
+               DEBUG_MSG("[drmd_open] Cannot create frame buffer\n");
                goto drm_err_exit;
        }
 
+       if (kms_bo_map(drmdi->bo[FRAME_BUFFER2], &ptr2)) {
+               DEBUG_MSG("[drmd_open] kms_bo_map() failed. \n");
+               goto drm_err_exit;
+       }
+
+       drmdi->fb_buf2 = ptr2;
+       memset(ptr2, 0x00, drmdi->bo_stride * drmdi->bo_height);
+       kms_bo_unmap(drmdi->bo[FRAME_BUFFER2]);
+
+
+       ret = drmModePageFlip(drmdi->fd, drmdi->crtc->crtc_id, drmdi->fb_id[0],
+                             DRM_MODE_PAGE_FLIP_EVENT, drmdi);
+       if (ret) {
+               DEBUG_MSG("failed to page flip: %s\n", strerror(errno));
+               return -1;
+       }
+
+       memset(&evctx, 0, sizeof evctx);
+       evctx.version = DRM_EVENT_CONTEXT_VERSION;
+       evctx.vblank_handler = NULL;
+       evctx.page_flip_handler = page_flip_handler;
+
+       {
+               struct timeval timeout = { .tv_sec = 3, .tv_usec = 0 };
+               fd_set fds;
+
+
+               FD_ZERO(&fds);
+               FD_SET(0, &fds);
+               FD_SET(drmdi->fd, &fds);
+               ret = select(drmdi->fd + 1, &fds, NULL, NULL, &timeout);
+
+               if (ret <= 0) {
+                       DEBUG_MSG("select timed out or error (ret %d)\n",
+                               ret);
+               } else if (FD_ISSET(0, &fds)) {
+       //              break;
+                       DEBUG_MSG("drmHandleEvent.. \n");
+               }
+
+               drmHandleEvent(drmdi->fd, &evctx);
+       }
+
        return 0;
 
 drm_err_exit:
+       DEBUG_MSG("drm_err_exit\n");
        free_drm_res(drmdi);
        return -1;
 }
@@ -259,7 +325,10 @@ drm_err_exit:
  ----------------------------------------------------------------------------*/
 void drmd_close(st_drmdi *drmdi)
 {
-       kms_bo_unmap(drmdi->bo);
+       int i;
+       for( i = 0 ;i <FRAME_BUFFER2 ; i++) {
+               kms_bo_unmap(drmdi->bo[i]);
+       }
        free_drm_res(drmdi);
 }
 
@@ -272,14 +341,14 @@ static int drmd_set_dpms_mode(st_drmdi *drmdi, int dpms_mode)
        drmModeConnectorPtr connector;
 
        if (drmdi == NULL) {
-               LOGD("[drmd_set_dpms_mode] drmdi is NULL\n");
+               DEBUG_MSG("[drmd_set_dpms_mode] drmdi is NULL\n");
                return -1;
        }
 
        connector = drmdi->connector;
 
        if (dpms_mode == DPMSModeStandby || dpms_mode == DPMSModeSuspend) {
-               LOGD("[drmd_set_dpms_mode] dmps_mode %s is not supported.\n",
+               DEBUG_MSG("[drmd_set_dpms_mode] dmps_mode %s is not supported.\n",
                        (dpms_mode == DPMSModeStandby)?
                        "DPMSModeStandby":"DPMSModeSuspend");
                return -1;
@@ -343,7 +412,7 @@ int drmd_lcd_on(st_drmdi *drmdi)
 
        ret = drmd_set_dpms_mode(drmdi, DPMSModeOn);
        if (ret < 0) {
-               LOGD("[drmd_lcd_on] drmd_set_dpms_mode() fail.\n");
+               DEBUG_MSG("[drmd_lcd_on] drmd_set_dpms_mode() fail.\n");
                return -1;
        }
 
@@ -359,7 +428,7 @@ int drmd_lcd_off(st_drmdi *drmdi)
 
        ret = drmd_set_dpms_mode(drmdi, DPMSModeOff);
        if (ret < 0) {
-               LOGD("[drmd_lcd_off] drmd_set_dpms_mode() fail.\n");
+               DEBUG_MSG("[drmd_lcd_off] drmd_set_dpms_mode() fail.\n");
                return -1;
        }
 
index 05bbb75..23c3b51 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -34,7 +34,7 @@ void get_env(char *name, char *buf, int size)
                snprintf(buf, size, "%s", ret);
        }
 
-       LOGD("[gen_env] %s ---> %s\n", name, buf);
+       DEBUG_MSG("[gen_env] %s ---> %s\n", name, buf);
 }
 
 void chg_env_str_load(void)
index a37373e..a354bd6 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -83,19 +83,19 @@ static int get_lcd_resolution(void)
                yres = atoi(chg_env_str[EN_ENV_LCD_YRES]);
 
        if ((xres == 320) && (yres == 480)) {
-               LOGD("[get_lcd_resolution] E_LCD_RES_320x480 \n");
+               DEBUG_MSG("[get_lcd_resolution] E_LCD_RES_320x480 \n");
                ret_lcd_res = E_LCD_RES_320x480;
        } else if ((xres == 1024) && (yres == 600)) {
-               LOGD("[get_lcd_resolution] E_LCD_RES_1024x600 \n");
+               DEBUG_MSG("[get_lcd_resolution] E_LCD_RES_1024x600 \n");
                ret_lcd_res = E_LCD_RES_1024x600;
        } else if ((xres == 720) && (yres == 1280)) {
-               LOGD("[get_lcd_resolution] E_LCD_RES_720x1280 \n");
+               DEBUG_MSG("[get_lcd_resolution] E_LCD_RES_720x1280 \n");
                ret_lcd_res = E_LCD_RES_720x1280;
        } else if ((xres == 1280) && (yres == 800)) {
-               LOGD("[get_lcd_resolution] E_LCD_RES_1280x800 \n");
+               DEBUG_MSG("[get_lcd_resolution] E_LCD_RES_1280x800 \n");
                ret_lcd_res = E_LCD_RES_1280x800;
        } else {
-               LOGD("[get_lcd_resolution] E_LCD_RES_480x800 \n");
+               DEBUG_MSG("[get_lcd_resolution] E_LCD_RES_480x800 \n");
        }
 
 
@@ -174,13 +174,13 @@ int fb_open(FbInfo *fbi)
        support_drm = atoi(chg_env_str[EN_ENV_SUPPORT_DRM]);
 
        if ((support_fb == 1) && (support_drm == 0)) {
-               LOGD("[fb_open] fb device is detected. \n");
+               DEBUG_MSG("[fb_open] fb device is detected. \n");
                fbi->type = FB_DEV_FB;
        } else if ((support_fb == 0) && (support_drm == 1)) {
-               LOGD("[fb_open] drm device is detected. \n");
+               DEBUG_MSG("[fb_open] drm device is detected. \n");
                fbi->type = FB_DEV_DRM;
        } else {
-               LOGD("[fb_open] No graphic device is specified. \n");
+               DEBUG_MSG("[fb_open] No graphic device is specified. \n");
                return -1;
        }
 
@@ -200,6 +200,8 @@ int fb_open(FbInfo *fbi)
                        return -1;
 
                fbi->buf = s_drmdi.fb_buf;
+               fbi->buf2 = s_drmdi.fb_buf2;
+               fbi->current_fb_id = s_drmdi.fb_id[0];
                fbi->w = s_drmdi.bo_width;
                fbi->h = s_drmdi.bo_height;
                fbi->sz = s_drmdi.bo_stride * s_drmdi.bo_height;
@@ -235,9 +237,14 @@ void fb_close(FbInfo *fbi)
  ----------------------------------------------------------------------------*/
 void fb_clear_screen(FbInfo *fbi, unsigned int color)
 {
-       unsigned int *fb_buf_cur = (unsigned int *)fbi->buf;
+       unsigned int *fb_buf_cur;
        int loop_count = fbi->w * fbi->h;
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fb_buf_cur = (unsigned int *)fbi->buf;
+       else
+               fb_buf_cur = (unsigned int *)fbi->buf2;
+
        while (loop_count--)
                *(fb_buf_cur++) = color;
 }
@@ -248,7 +255,7 @@ void fb_clear_screen(FbInfo *fbi, unsigned int color)
 void fb_fill_rect(FbInfo *fbi, int x1, int y1, int x2, int y2,
                         unsigned int color)
 {
-       unsigned int *fb_buf_cur = (unsigned int *)fbi->buf;
+       unsigned int *fb_buf_cur;
        unsigned int *fb_line_buf;
        int screen_width = fbi->w;
        int draw_width = x2 - x1 + 1;
@@ -256,6 +263,11 @@ void fb_fill_rect(FbInfo *fbi, int x1, int y1, int x2, int y2,
        int width_cnt;
        int height_cnt;
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fb_buf_cur = (unsigned int *)fbi->buf;
+       else
+               fb_buf_cur = (unsigned int *)fbi->buf2;
+
        fb_buf_cur += (x1 + y1 * screen_width);
        fb_line_buf = fb_buf_cur;
        width_cnt = draw_width;
@@ -281,21 +293,28 @@ void fb_draw_img_normal_charging(FbInfo *fbi)
        static int batt_bar = 5;
        char chg_img_filename[MAX_IMG_FILE_PATH];
 
-       if (progress_cnt == 0) {
-               batt_bar = batt_chg_level();
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fbi->current_fb_id = s_drmdi.fb_id[1];
+       else
+               fbi->current_fb_id = s_drmdi.fb_id[0];
+
+       /* fill full screen with black color */
+       fb_clear_screen(fbi, 0x00000000);
 
-               /* draw charging image based on batt_bar */
-               sprintf(chg_img_filename, "%s%s_%d.png",
-                       str_chg_img_dir, CHG_IMG_NORMAL_PREFIX, batt_bar);
+       batt_bar = batt_chg_level();
 
-               if (read_png_file(chg_img_filename) < 0) {
-                       return;
-               }
+       /* draw charging image based on batt_bar */
+       sprintf(chg_img_filename, "%s%s_%d.png",
+               str_chg_img_dir, CHG_IMG_NORMAL_PREFIX, batt_bar);
 
-               draw_png_img_xy(fbi, s_normal_img_x, s_normal_img_y);
-               release_png_res();
+       if (read_png_file(chg_img_filename) < 0) {
+               return;
        }
 
+       draw_png_img_xy(fbi, s_normal_img_x, s_normal_img_y);
+       release_png_res();
+
+
        /* draw charging image based on progress_cnt */
        sprintf(chg_img_filename, "%s%s_%02d.png",
                str_chg_img_dir, CHG_IMG_PROGRESS_PREFIX, progress_cnt + 1);
@@ -312,6 +331,11 @@ void fb_draw_img_normal_charging(FbInfo *fbi)
                progress_cnt = 0;
        }
 
+       DEBUG_MSG("[fb_draw_img_normal_charging] current_fb_id :%d\n",\
+               fbi->current_fb_id);
+       drmModePageFlip(s_drmdi.fd, s_drmdi.crtc->crtc_id, fbi->current_fb_id,\
+               DRM_MODE_PAGE_FLIP_EVENT, NULL);
+       drmHandleEvent(s_drmdi.fd, &evctx);
 }
 
 /*-----------------------------------------------------------------------------
@@ -321,6 +345,15 @@ void fb_draw_img_full_charging(FbInfo *fbi)
 {
        char chg_img_filename[MAX_IMG_FILE_PATH];
 
+
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fbi->current_fb_id = s_drmdi.fb_id[1];
+       else
+               fbi->current_fb_id = s_drmdi.fb_id[0];
+
+       /* fill full screen with black color */
+       fb_clear_screen(fbi, 0x00000000);
+
        /* draw charging image based on batt_bar & progress_cnt */
        sprintf(chg_img_filename, "%s%s_100.png",
                str_chg_img_dir, CHG_IMG_NORMAL_PREFIX);
@@ -332,6 +365,12 @@ void fb_draw_img_full_charging(FbInfo *fbi)
        draw_png_img_xy(fbi, s_normal_img_x, s_normal_img_y);
        release_png_res();
 
+       DEBUG_MSG("[fb_draw_img_full_charging] current_fb_id :%d\n",\
+               fbi->current_fb_id);
+       drmModePageFlip(s_drmdi.fd, s_drmdi.crtc->crtc_id, fbi->current_fb_id,\
+               DRM_MODE_PAGE_FLIP_EVENT, NULL);
+       drmHandleEvent(s_drmdi.fd, &evctx);
+
 }
 
 /*-----------------------------------------------------------------------------
@@ -341,6 +380,14 @@ void fb_draw_img_batt_err_plug(FbInfo *fbi)
 {
        char chg_img_filename[MAX_IMG_FILE_PATH];
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fbi->current_fb_id = s_drmdi.fb_id[1];
+       else
+               fbi->current_fb_id = s_drmdi.fb_id[0];
+
+       /* fill full screen with black color */
+       fb_clear_screen(fbi, 0x00000000);
+
        /* draw charging image based on batt_bar & progress_cnt */
        sprintf(chg_img_filename, "%s%s.png",
                str_chg_img_dir, CHG_IMG_DISCONNECT);
@@ -349,10 +396,14 @@ void fb_draw_img_batt_err_plug(FbInfo *fbi)
                return;
        }
 
-       fb_clear_screen(fbi, 0x00000000);
        draw_png_img_xy(fbi, s_err_img_x, s_err_img_y);
        release_png_res();
 
+       DEBUG_MSG("[fb_draw_img_batt_err_plug]new_fb_id : %d\n",\
+               fbi->current_fb_id);
+       drmModePageFlip(s_drmdi.fd, s_drmdi.crtc->crtc_id, fbi->current_fb_id,\
+               DRM_MODE_PAGE_FLIP_EVENT, NULL);
+       drmHandleEvent(s_drmdi.fd, &evctx);
 }
 
 /*-----------------------------------------------------------------------------
@@ -362,19 +413,26 @@ void fb_draw_img_batt_err_temp(FbInfo *fbi)
 {
        char chg_img_filename[MAX_IMG_FILE_PATH];
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fbi->current_fb_id = s_drmdi.fb_id[1];
+       else
+               fbi->current_fb_id = s_drmdi.fb_id[0];
+
+       /* fill full screen with black color */
+       fb_clear_screen(fbi, 0x00000000);
+
        /* draw charging image based on batt_bar & progress_cnt */
        sprintf(chg_img_filename, "%s%s.png",
                str_chg_img_dir, CHG_IMG_TEMP_ERROR);
 
        /* clear screen based on normal_img & progress_img */
-       fb_fill_rect(fbi, s_normal_img_x, s_normal_img_y,\
+       /* fb_fill_rect(fbi, s_normal_img_x, s_normal_img_y,\
                        s_normal_img_x + png_img_width_batt_normal,\
                        s_normal_img_y + png_img_height_batt_normal,\
                        0x00000000);
        fb_fill_rect(fbi, s_progress_img_x, s_progress_img_y,\
                        s_progress_img_x + png_img_width,\
-                       s_progress_img_y + png_img_height, 0x00000000);
-
+                       s_progress_img_y + png_img_height, 0x00000000);*/
        if (read_png_file(chg_img_filename) < 0) {
                return;
        }
@@ -382,6 +440,12 @@ void fb_draw_img_batt_err_temp(FbInfo *fbi)
        draw_png_img_xy(fbi, s_err_img_x, s_err_img_y);
        release_png_res();
 
+       DEBUG_MSG("[fb_draw_img_batt_err_temp]new_fb_id : %d\n",\
+               fbi->current_fb_id);
+       drmModePageFlip(s_drmdi.fd, s_drmdi.crtc->crtc_id, fbi->current_fb_id,\
+               DRM_MODE_PAGE_FLIP_EVENT, NULL);
+       drmHandleEvent(s_drmdi.fd, &evctx);
+
 }
 
 /*-----------------------------------------------------------------------------
@@ -393,6 +457,14 @@ void fb_draw_img_batt_err_charging(FbInfo *fbi)
        static int batt_bar = 5;
        char chg_img_filename[MAX_IMG_FILE_PATH];
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fbi->current_fb_id = s_drmdi.fb_id[1];
+       else
+               fbi->current_fb_id = s_drmdi.fb_id[0];
+
+       /* fill full screen with black color */
+       fb_clear_screen(fbi, 0x00000000);
+
        batt_bar = batt_chg_level();
 
        /* draw charging image based on batt_bar */
@@ -400,9 +472,9 @@ void fb_draw_img_batt_err_charging(FbInfo *fbi)
                str_chg_img_dir, CHG_IMG_NORMAL_PREFIX, batt_bar);
 
        /* clear screen based on err_img */
-       fb_fill_rect(fbi, s_err_img_x, s_err_img_y,\
+       /* fb_fill_rect(fbi, s_err_img_x, s_err_img_y,\
                        s_err_img_x + png_img_width,\
-                       s_err_img_y + png_img_height, 0x00000000);
+                       s_err_img_y + png_img_height, 0x00000000);*/
 
        if (read_png_file(chg_img_filename) < 0) {
                return;
@@ -411,8 +483,8 @@ void fb_draw_img_batt_err_charging(FbInfo *fbi)
        draw_png_img_xy(fbi, s_normal_img_x, s_normal_img_y);
        release_png_res();
 
-       png_img_width_batt_normal = png_img_width;
-       png_img_height_batt_normal = png_img_height;
+//     png_img_width_batt_normal = png_img_width;
+//     png_img_height_batt_normal = png_img_height;
 
        /* draw charging image based on progress_cnt */
        sprintf(chg_img_filename, "%s%s_%02d.png",
@@ -430,4 +502,9 @@ void fb_draw_img_batt_err_charging(FbInfo *fbi)
                progress_cnt = 0;
        }
 
+       DEBUG_MSG("[fb_draw_img_batt_err_charging]new_fb_id : %d\n",\
+               fbi->current_fb_id);
+       drmModePageFlip(s_drmdi.fd, s_drmdi.crtc->crtc_id, fbi->current_fb_id,\
+               DRM_MODE_PAGE_FLIP_EVENT, NULL);
+       drmHandleEvent(s_drmdi.fd, &evctx);
 }
index 1c7fa26..c74ea1e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -31,21 +31,21 @@ int fbd_open(st_fbdi *fbdi)
 {
        fbdi->fb_fd = open(chg_env_str[EN_ENV_DEV_FB], O_RDWR);
        if (!fbdi->fb_fd) {
-               LOGD("Error: cannot open framebuffer device.\n");
+               DEBUG_MSG("Error: cannot open framebuffer device.\n");
                return -1;
        }
 
        /* Get fixed screen information */
        if (ioctl(fbdi->fb_fd, FBIOGET_FSCREENINFO, &fbdi->fi)) {
                close(fbdi->fb_fd);
-               LOGD("Error reading fixed information.\n");
+               DEBUG_MSG("Error reading fixed information.\n");
                return -1;
        }
 
        /* Get variable screen information */
        if (ioctl(fbdi->fb_fd, FBIOGET_VSCREENINFO, &fbdi->vi)) {
                close(fbdi->fb_fd);
-               LOGD("Error reading fixed information.\n");
+               DEBUG_MSG("Error reading fixed information.\n");
                return -1;
        }
 
@@ -60,7 +60,7 @@ int fbd_open(st_fbdi *fbdi)
                                  fbdi->fb_fd, 0);
        if ((void*)fbdi->fb_buf == (void*)-1) {
                close(fbdi->fb_fd);
-               LOGD("Error: failed to map framebuffer device to memory.\n");
+               DEBUG_MSG("Error: failed to map framebuffer device to memory.\n");
                return -1;
        }
 
index 77164be..c1da0a9 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -44,7 +44,7 @@ limitations under the License.
 #define LCD_DIMM_COUNT         (LCD_DIMM_TIME/EVT_LOOP_DURATION)
 #define LCD_OFF_COUNT          (LCD_OFF_TIME/EVT_LOOP_DURATION)
 
-#define KEY_INPUT_PATH         "/dev/input/event7"
+#define KEY_INPUT_PATH         "/dev/input/event1"
 
 FbInfo fbi;
 
@@ -62,12 +62,11 @@ int event_monitor_process(void *arg)
        struct timeval tv;
        static int key_push_time = 0;
        static int key_release_time = 0;
-       char* key_dev_node;
 
-       LOGD("[main] event_monitor_process() started. %s\n", (char *)arg);
+       DEBUG_MSG("[main] event_monitor_process() started. %s\n", (char *)arg);
 
        if ((fd = open(arg, O_RDWR)) < 0) {
-               LOGD("%s: open error, fd = %d\n", (char *)arg, fd);
+               DEBUG_MSG("%s: open error, fd = %d\n", (char *)arg, fd);
                return -1;
        }
 
@@ -80,7 +79,7 @@ int event_monitor_process(void *arg)
                ret = poll(&pollevents, 1, EVT_LOOP_DURATION);
 
                if (ret < 0)
-                       LOGD("poll error\n");
+                       DEBUG_MSG("poll error\n");
 
                if (lcd_on_flag) {
                        if (lcd_on_flag == 1) {
@@ -99,7 +98,7 @@ int event_monitor_process(void *arg)
 
                if (!batt_full_charged) {
                        if (is_batt_chg_full()) {
-                               LOGD("battery fully charged\n");
+                               DEBUG_MSG("battery fully charged\n");
                                lcd_on_flag = 1;
                                batt_full_charged = 1;
                        }
@@ -120,7 +119,8 @@ int event_monitor_process(void *arg)
 
                sys_power_cnt++;
 
-               LOGD("poll event : %d\n", ret);
+               DEBUG_MSG("poll event : %d, fd : %d sys_power_cnt : %d, arg : %s\n" \
+                        , ret, pollevents.fd, sys_power_cnt, (char *) arg);
 
                if (key_push_time) {
                        gettimeofday(&tv, NULL);
@@ -135,11 +135,11 @@ int event_monitor_process(void *arg)
                if (pollevents.revents & POLLIN) {
                        readcount = read(pollevents.fd, &event, sizeof(event));
                        if (readcount != sizeof(event)) {
-                               LOGD("key read error\n");
+                               DEBUG_MSG("key read error\n");
                                continue;
                        }
 
-                       LOGD("key events happen\n");
+                       DEBUG_MSG("key events happen\n");
                        if (event.type == EV_KEY) {
                                if (event.value == KEY_VAL_PRESS) {
                                        if (event.code == KEY_CODE_POWER) {
@@ -154,7 +154,7 @@ int event_monitor_process(void *arg)
                                        sys_power_cnt = 0;
                                }
 
-                               LOGD("keycod: 0x%x, value: %d\n",
+                               DEBUG_MSG("keycod: 0x%x, value: %d\n",
                                     event.code, event.value);
 
                                if (event.value == KEY_VAL_RELEASE
@@ -165,7 +165,7 @@ int event_monitor_process(void *arg)
                                }
 
                        } else if (event.type == EV_SYN) {
-                               LOGD("syn keycod: 0x%x, value: %d\n",
+                               DEBUG_MSG("syn keycod: 0x%x, value: %d\n",
                                     event.code, event.value);
                        }
 
@@ -182,13 +182,10 @@ int charging_animation_process(void)
        int charging_mode = 0;
        int batt_err_temp_cnt = 0;
 
-       LOGD("[main] charging_animation_process() started. \n");
+       DEBUG_MSG("[main] charging_animation_process() started. \n");
 
        set_chg_img_params();
 
-       /* fill full screen with black color */
-       fb_clear_screen(&fbi, 0x00000000);
-
        /* main loop for checking battery status
           and draw apropriate charging images   */
        while (1) {
@@ -244,11 +241,11 @@ int main(int argc, char *argv[])
        chg_env_str_load();
 
        if (fb_open(&fbi) < 0) {
-               LOGD("[main] fb_open() failed. \n");
+               DEBUG_MSG("[main] fb_open() failed. \n");
                return -1;
        }
 
-       LOGD("charging-animation main function called.");
+       DEBUG_MSG("charging-animation main function called.");
 
        sys_power_wakeup(&fbi);
        lcd_bl_on(&fbi);
@@ -256,14 +253,14 @@ int main(int argc, char *argv[])
 
        if (clone(event_monitor_process, (void *)(child_stack + 4095),
                  CLONE_VM | CLONE_THREAD | CLONE_SIGHAND, key_path) < 0) {
-               LOGD("[main] cannot creat thread ... \n");
+               DEBUG_MSG("[main] cannot creat thread ... \n");
                goto main_exit;
        }
 
        charging_animation_process();
 
 main_exit:
-       LOGD("[main] terminate %s \n", argv[0]);
+       DEBUG_MSG("[main] terminate \n");
        lcd_br_dimm();
        lcd_bl_off(&fbi);
        sys_power_sleep(&fbi);
index 4748eed..501aa69 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -19,7 +19,6 @@ limitations under the License.
 #include <sys/wait.h>
 #include <fcntl.h>
 #include <unistd.h>
-#include <errno.h>
 #include <string.h>
 #include <stdlib.h>
 #include "chg_common.h"
@@ -38,7 +37,7 @@ int read_from_file(const char *path, char *buf, int size)
 
        fd = open(path, O_RDONLY, 0);
        if (fd == -1) {
-               LOGD("[read_from_file] Could not open '%s'", path);
+               DEBUG_MSG("[read_from_file] Could not open '%s'", path);
                return -1;
        }
 
@@ -71,14 +70,14 @@ int write_to_file(const char *path, const char *buf)
 
        fd = open(path, O_WRONLY);
        if (fd == -1) {
-               LOGD("[write_to_file] Could not open '%s'", path);
+               DEBUG_MSG("[write_to_file] Could not open '%s'", path);
                return -1;
        }
 
        count = write(fd, buf, strlen(buf));
        close(fd);
        if (count < 0) {
-               LOGD("[write_to_file] %s write error", path);
+               DEBUG_MSG("[write_to_file] %s write error", path);
                return (int)count;
        }
 
@@ -163,7 +162,7 @@ int system_cmd_nowait(const char *command)
                execve("/bin/sh", argv, environ);
                exit(127);
        } else if (pid < 0) {
-               LOGD("execve fail : '%s'", command);
+               DEBUG_MSG("execve fail : '%s'", command);
                return -1;
        }
 
index e3f1af3..2189970 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -21,8 +21,9 @@ limitations under the License.
 
 int png_img_width;
 int png_img_height;
-int png_img_width_batt_normal;
-int png_img_height_batt_normal;
+/* clear screen based on img size */
+//int png_img_width_batt_normal;
+//int png_img_height_batt_normal;
 
 png_byte color_type;
 png_byte bit_depth;
@@ -43,7 +44,7 @@ int read_png_file(char *file_name)
        /* open file and test for it being a png */
        FILE *fp = fopen(file_name, "rb");
        if (!fp) {
-               LOGD("[read_png_file] File %s could not be opened"
+               DEBUG_MSG("[read_png_file] File %s could not be opened"
                        " for reading \n", file_name);
                return -1;
        }
@@ -51,7 +52,7 @@ int read_png_file(char *file_name)
        (void)fread(header, 1, 8, fp);
        if (png_sig_cmp((png_bytep)header, 0, 8)) {
                fclose(fp);
-               LOGD("[read_png_file] File %s is not recognized"
+               DEBUG_MSG("[read_png_file] File %s is not recognized"
                        " as a PNG file \n", file_name);
                return -1;
        }
@@ -61,7 +62,7 @@ int read_png_file(char *file_name)
            png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
        if (!png_ptr) {
                fclose(fp);
-               LOGD("[read_png_file] png_create_read_struct failed \n");
+               DEBUG_MSG("[read_png_file] png_create_read_struct failed \n");
                return -1;
        }
 
@@ -69,14 +70,14 @@ int read_png_file(char *file_name)
        if (!info_ptr) {
                png_destroy_read_struct(&png_ptr, NULL, NULL);
                fclose(fp);
-               LOGD("[read_png_file] png_create_info_struct failed \n");
+               DEBUG_MSG("[read_png_file] png_create_info_struct failed \n");
                return -1;
        }
 
        if (setjmp(png_jmpbuf(png_ptr))) {
                png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
                fclose(fp);
-               LOGD("[read_png_file] Error during init_io \n");
+               DEBUG_MSG("[read_png_file] Error during init_io \n");
                return -1;
        }
 
@@ -96,7 +97,7 @@ int read_png_file(char *file_name)
        if (setjmp(png_jmpbuf(png_ptr))) {
                png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
                fclose(fp);
-               LOGD("[read_png_file] Error during read_image \n");
+               DEBUG_MSG("[read_png_file] Error during read_image \n");
                return -1;
        }
 
@@ -116,15 +117,19 @@ int read_png_file(char *file_name)
  ----------------------------------------------------------------------------*/
 void draw_png_img_xy(FbInfo *fbi, int x1, int y1)
 {
-       unsigned int *fb_buf_cur = (unsigned int *)fbi->buf;
+       unsigned int *fb_buf_cur;
        int bpp;
        int x, y;
 
+       if (fbi->current_fb_id == s_drmdi.fb_id[0])
+               fb_buf_cur = (unsigned int *)fbi->buf;
+       else
+               fb_buf_cur = (unsigned int *)fbi->buf2;
+
        /* check out range */
        if ((x1 + png_img_width > fbi->w) ||
            (y1 + png_img_height > fbi->h)) {
-               LOGD("[draw_png_img_xy] "
-                       "output range exceeds frame buffer range \n");
+               DEBUG_MSG("[draw_png_img_xy] output range exceeds frame buffer range \n");
                return;
        }
 
@@ -133,8 +138,7 @@ void draw_png_img_xy(FbInfo *fbi, int x1, int y1)
        else if (color_type == PNG_COLOR_TYPE_RGBA)
                bpp = 4;
        else {
-               LOGD("[draw_png_img_xy] "
-                       "png type does not match RGB or RGBA \n");
+               DEBUG_MSG("[draw_png_img_xy] png type does not match RGB or RGBA \n");
                return;
        }
 
index 1ff0fe7..c802857 100755 (executable)
@@ -1,11 +1,11 @@
 /*
-Copyright 20122013  Samsung Electronics Co., Ltd
+Copyright 2012-2013  Samsung Electronics Co., Ltd
 
 Licensed under the Flora License, Version 1.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-    http://www.tizenopensource.org/license
+    http://floralicense.org/license/
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -76,7 +76,7 @@ static int fb_lcd_bl_off(void)
  ----------------------------------------------------------------------------*/
 int lcd_bl_on(FbInfo *fbi)
 {
-       LOGD("lcd_bl_on() is called.\n");
+       DEBUG_MSG("lcd_bl_on() is called.\n");
        if (s_lcd_bl_state == LCD_BL_ON)
                return 0;
 
@@ -98,7 +98,7 @@ int lcd_bl_on(FbInfo *fbi)
  ----------------------------------------------------------------------------*/
 int lcd_bl_off(FbInfo *fbi)
 {
-       LOGD("lcd_bl_off() is called.\n");
+       DEBUG_MSG("lcd_bl_off() is called.\n");
        if (s_lcd_bl_state == LCD_BL_OFF)
                return 0;
 
@@ -131,7 +131,7 @@ int lcd_br_normal(void)
 {
        int ret;
 
-       LOGD("lcd_br_normal() is called.\n");
+       DEBUG_MSG("lcd_br_normal() is called.\n");
        ret = write_to_file((const char*)chg_env_str[EN_ENV_LCD_BRIGHT],
                (const char*)chg_env_str[EN_ENV_LCD_BR_NORM_VAL]);
        if (ret < 0)
@@ -148,7 +148,7 @@ int lcd_br_dimm(void)
 {
        int ret;
 
-       LOGD("lcd_br_dimm() is called.\n");
+       DEBUG_MSG("lcd_br_dimm() is called.\n");
        ret = write_to_file((const char*)chg_env_str[EN_ENV_LCD_BRIGHT],
                (const char*)chg_env_str[EN_ENV_LCD_BR_DIMM_VAL]);
        if (ret < 0)
@@ -171,7 +171,7 @@ int lcd_br_state(void)
  ----------------------------------------------------------------------------*/
 int sys_power_wakeup(FbInfo *fbi)
 {
-       LOGD("sys_power_wakeup() is called.\n");
+       DEBUG_MSG("sys_power_wakeup() is called.\n");
        lcd_bl_on(fbi);
        s_sys_power_state = SYS_POWER_ON;
        return 0;
@@ -182,9 +182,10 @@ int sys_power_wakeup(FbInfo *fbi)
  ----------------------------------------------------------------------------*/
 int sys_power_sleep(FbInfo *fbi)
 {
-       LOGD("sys_power_sleep() is called.\n");
+       DEBUG_MSG("sys_power_sleep() is called.\n");
        lcd_bl_off(fbi);
        s_sys_power_state = SYS_POWER_OFF;
+//     system_cmd_nowait("echo mem > /sys/power/state");
        return 0;
 }
 
@@ -201,7 +202,7 @@ int sys_power_state(void)
  ----------------------------------------------------------------------------*/
 void sys_power_reboot(void)
 {
-       LOGD("sys_power_reboot() is called.\n");
+       DEBUG_MSG("sys_power_reboot() is called.\n");
        reboot(RB_AUTOBOOT);
 }
 
@@ -210,7 +211,7 @@ void sys_power_reboot(void)
  ----------------------------------------------------------------------------*/
 void sys_power_off(void)
 {
-       LOGD("sys_power_off() is called.\n");
+       DEBUG_MSG("sys_power_off() is called.\n");
        reboot(RB_POWER_OFF);
 }