summaryrefslogtreecommitdiff
path: root/src/drivers/Android/Fl_Android_Application.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-03-05 23:17:51 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-03-05 23:17:51 +0000
commit3ed5e71da71e50849eb9e2c3244e843bc5e38a05 (patch)
tree245443359440a9b9927660e5a48b388bce0ce820 /src/drivers/Android/Fl_Android_Application.cxx
parentb47db80af359e5ab3b2188573cbf42ee439a2be7 (diff)
Android: moved to IDE directory.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12711 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/Android/Fl_Android_Application.cxx')
-rw-r--r--src/drivers/Android/Fl_Android_Application.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/drivers/Android/Fl_Android_Application.cxx b/src/drivers/Android/Fl_Android_Application.cxx
index 59fa8483c..0219d66fe 100644
--- a/src/drivers/Android/Fl_Android_Application.cxx
+++ b/src/drivers/Android/Fl_Android_Application.cxx
@@ -397,9 +397,21 @@ void Fl_Android_Application::copy_screen()
// TODO: there are endless possibilities to optimize the following code
// We can identify previously written buffers and copy only those pixels
// that actually changed.
- memcpy(pNativeWindowBuffer.bits,
- pApplicationWindowBuffer.bits,
- 600*800*2);
+ const uint16_t *src = (uint16_t*)pApplicationWindowBuffer.bits;
+ int srcStride = pApplicationWindowBuffer.stride;
+ int ww = pApplicationWindowBuffer.width;
+ int hh = pApplicationWindowBuffer.height;
+
+ uint16_t *dst = (uint16_t*)pNativeWindowBuffer.bits;
+ int dstStride = pNativeWindowBuffer.stride;
+ if (pNativeWindowBuffer.width<ww) ww = pNativeWindowBuffer.width;
+ if (pNativeWindowBuffer.height<ww) ww = pNativeWindowBuffer.height;
+
+ for (int row=hh; row>0; --row) {
+ memcpy(dst, src, size_t(ww * 2));
+ src += srcStride;
+ dst += dstStride;
+ }
unlock_and_post_screen();
}
}