hwc: Close Fds in case of errors in openFramebuffer

Close opened Fds in case of errors in openFramebuffer
function.

Change-Id: Ifd80adf1eff0d2efd698cd4abd3980d5c1f333ab
CRs-fixed: 473488
This commit is contained in:
Sravan Kumar D.V.N
2013-04-16 10:24:55 +05:30
committed by Gerrit - the friendly Code Review server
parent 6fc3f3163c
commit 78f51e7050

View File

@@ -52,9 +52,17 @@ static int openFramebufferDevice(hwc_context_t *ctx)
struct fb_var_screeninfo info; struct fb_var_screeninfo info;
int fb_fd = openFb(HWC_DISPLAY_PRIMARY); int fb_fd = openFb(HWC_DISPLAY_PRIMARY);
if(fb_fd < 0) {
if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &info) == -1) ALOGE("%s: Error Opening FB : %s", __FUNCTION__, strerror(errno));
return -errno; return -errno;
}
if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &info) == -1) {
ALOGE("%s:Error in ioctl FBIOGET_VSCREENINFO: %s", __FUNCTION__,
strerror(errno));
close(fb_fd);
return -errno;
}
if (int(info.width) <= 0 || int(info.height) <= 0) { if (int(info.width) <= 0 || int(info.height) <= 0) {
// the driver doesn't return that information // the driver doesn't return that information
@@ -72,7 +80,9 @@ static int openFramebufferDevice(hwc_context_t *ctx)
metadata.op = metadata_op_frame_rate; metadata.op = metadata_op_frame_rate;
if (ioctl(fb_fd, MSMFB_METADATA_GET, &metadata) == -1) { if (ioctl(fb_fd, MSMFB_METADATA_GET, &metadata) == -1) {
ALOGE("Error retrieving panel frame rate"); ALOGE("%s:Error retrieving panel frame rate: %s", __FUNCTION__,
strerror(errno));
close(fb_fd);
return -errno; return -errno;
} }
@@ -83,11 +93,12 @@ static int openFramebufferDevice(hwc_context_t *ctx)
float fps = info.reserved[3] & 0xFF; float fps = info.reserved[3] & 0xFF;
#endif #endif
if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &finfo) == -1) if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &finfo) == -1) {
return -errno; ALOGE("%s:Error in ioctl FBIOGET_FSCREENINFO: %s", __FUNCTION__,
strerror(errno));
if (finfo.smem_len <= 0) close(fb_fd);
return -errno; return -errno;
}
ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd = fb_fd; ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd = fb_fd;
//xres, yres may not be 32 aligned //xres, yres may not be 32 aligned