diff options
author | David 'Digit' Turner <digit@google.com> | 2011-01-16 13:04:42 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-01-16 13:04:42 -0800 |
commit | f540c44fc218bffcdfbc226187d3cdc08e213c32 (patch) | |
tree | 957d926b3683f7e218b3be399a7e4b6778b6de81 /modules/gralloc/framebuffer.cpp | |
parent | 778ab436dee2918ae2fa083f4afa4ba68dc39235 (diff) | |
parent | 80d3699c9e8e18d57684f3b20d58fd259379a9d2 (diff) | |
download | hardware_libhardware-f540c44fc218bffcdfbc226187d3cdc08e213c32.zip hardware_libhardware-f540c44fc218bffcdfbc226187d3cdc08e213c32.tar.gz hardware_libhardware-f540c44fc218bffcdfbc226187d3cdc08e213c32.tar.bz2 |
am 80d3699c: gralloc: Fix division-by-0 during system emulation.
* commit '80d3699c9e8e18d57684f3b20d58fd259379a9d2':
gralloc: Fix division-by-0 during system emulation.
Diffstat (limited to 'modules/gralloc/framebuffer.cpp')
-rw-r--r-- | modules/gralloc/framebuffer.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/modules/gralloc/framebuffer.cpp b/modules/gralloc/framebuffer.cpp index a487b5d..59c5001 100644 --- a/modules/gralloc/framebuffer.cpp +++ b/modules/gralloc/framebuffer.cpp @@ -213,13 +213,17 @@ int mapFrameBufferLocked(struct private_module_t* module) if (ioctl(fd, FBIOGET_VSCREENINFO, &info) == -1) return -errno; - int refreshRate = 1000000000000000LLU / + uint64_t refreshQuotient = ( uint64_t( info.upper_margin + info.lower_margin + info.yres ) * ( info.left_margin + info.right_margin + info.xres ) * info.pixclock ); + /* Beware, info.pixclock might be 0 under emulation, so avoid a + * division-by-0 here (SIGFPE on ARM) */ + int refreshRate = refreshQuotient > 0 ? (int)(1000000000000000LLU / refreshQuotient) : 0; + if (refreshRate == 0) { // bleagh, bad info from the driver refreshRate = 60*1000; // 60 Hz |