summaryrefslogtreecommitdiff
path: root/chromium/content/renderer/render_widget.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/render_widget.cc')
-rw-r--r--chromium/content/renderer/render_widget.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/chromium/content/renderer/render_widget.cc b/chromium/content/renderer/render_widget.cc
index 970bdf426ed..24449d77790 100644
--- a/chromium/content/renderer/render_widget.cc
+++ b/chromium/content/renderer/render_widget.cc
@@ -184,6 +184,18 @@ static const int kInvalidNextPreviousFlagsValue = -1;
static const char* kOOPIF = "OOPIF";
static const char* kRenderer = "Renderer";
+#if defined(OS_ANDROID)
+// With 32 bit pixels, this would mean less than 400kb per buffer. Much less
+// than required for, say, nHD.
+static const int kSmallScreenPixelThreshold = 1e5;
+bool IsSmallScreen(const gfx::Size& size) {
+ int area = 0;
+ if (!size.GetCheckedArea().AssignIfValid(&area))
+ return false;
+ return area < kSmallScreenPixelThreshold;
+}
+#endif
+
class WebWidgetLockTarget : public content::MouseLockDispatcher::LockTarget {
public:
explicit WebWidgetLockTarget(blink::WebWidget* webwidget)
@@ -3013,7 +3025,8 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
#if defined(OS_ANDROID)
bool using_synchronous_compositor =
compositor_deps->UsingSynchronousCompositing();
- bool using_low_memory_policy = base::SysInfo::IsLowEndDevice();
+ bool using_low_memory_policy =
+ base::SysInfo::IsLowEndDevice() && !IsSmallScreen(screen_size);
settings.use_stream_video_draw_quad = true;
settings.using_synchronous_renderer_compositor = using_synchronous_compositor;