diff options
author | hoony.yu <hoony.yu@samsung.com> | 2010-10-10 15:36:39 -0700 |
---|---|---|
committer | Simon Wilson <simonwilson@google.com> | 2010-10-14 19:37:47 -0700 |
commit | 25bf1629c6ad7083fd4636a5558272697db85f1c (patch) | |
tree | fd44e33223063b474c9960eacd18dc220b774e30 /liboverlay | |
parent | 325d79f498f7130ba95ee498a2bf0f332566e9a5 (diff) | |
download | device_samsung_crespo-25bf1629c6ad7083fd4636a5558272697db85f1c.zip device_samsung_crespo-25bf1629c6ad7083fd4636a5558272697db85f1c.tar.gz device_samsung_crespo-25bf1629c6ad7083fd4636a5558272697db85f1c.tar.bz2 |
S5PC11X: OVERLAY: Fix a bug - incorrect comparison.
overlay_commit() compare previous resolution not with requested resolution,
but with real resolution.
Change-Id: Id36f60a307628280e8074c03aba34c0d7c6bef46
Signed-off-by: hoony.yu <hoony.yu@samsung.com>
Diffstat (limited to 'liboverlay')
-rw-r--r-- | liboverlay/overlay.cpp | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp index 0ff72dc..033b1d4 100644 --- a/liboverlay/overlay.cpp +++ b/liboverlay/overlay.cpp @@ -823,6 +823,28 @@ static int overlay_commit(struct overlay_control_device_t *dev, shared->controlReady = 1; } + g_s5p_fimc.params.dst.full_width = g_lcd_width; + g_s5p_fimc.params.dst.full_height = g_lcd_height; + g_s5p_fimc.params.dst.width = stage->posW; + g_s5p_fimc.params.dst.height = stage->posH; + if (g_lcd_bpp == 32) + g_s5p_fimc.params.dst.color_space = V4L2_PIX_FMT_RGB32; + else + g_s5p_fimc.params.dst.color_space = V4L2_PIX_FMT_RGB565; + ret = check_fimc_dst_constraints(&g_s5p_fimc, stage->rotation); + if (ret != 0) { + if (ret < 0) { + LOGE("Unsupported destination image size"); + goto end; + } else { + LOGD("dst width, height have changed [w= %d, h= %d] -> [w=%d, h= %d]", + stage->posW, stage->posH, g_s5p_fimc.params.dst.width, + g_s5p_fimc.params.dst.height); + stage->posW = g_s5p_fimc.params.dst.width; + stage->posH = g_s5p_fimc.params.dst.height; + } + } + if (data->posX == stage->posX && data->posY == stage->posY && data->posW == stage->posW && data->posH == stage->posH && data->rotation == stage->rotation) { @@ -848,27 +870,6 @@ static int overlay_commit(struct overlay_control_device_t *dev, v4l2_overlay_s_fbuf(fd, stage->rotation); } - g_s5p_fimc.params.dst.full_width = g_lcd_width; - g_s5p_fimc.params.dst.full_height = g_lcd_height; - g_s5p_fimc.params.dst.width = stage->posW; - g_s5p_fimc.params.dst.height = stage->posH; - if (g_lcd_bpp == 32) - g_s5p_fimc.params.dst.color_space = V4L2_PIX_FMT_RGB32; - else - g_s5p_fimc.params.dst.color_space = V4L2_PIX_FMT_RGB565; - ret = check_fimc_dst_constraints(&g_s5p_fimc, stage->rotation); - if (ret != 0) { - if (ret < 0) { - LOGE("Unsupported destination image size"); - goto end; - } else { - LOGD("dst width, height have changed [w= %d, h= %d] -> [w=%d, h= %d]", - stage->posW, stage->posH, g_s5p_fimc.params.dst.width, - g_s5p_fimc.params.dst.height); - stage->posW = g_s5p_fimc.params.dst.width; - stage->posH = g_s5p_fimc.params.dst.height; - } - } ret = v4l2_overlay_set_position(fd, stage->posX, stage->posY, stage->posW, stage->posH, stage->rotation); if (ret) { |