ozone: fix pointer size when crossing monitors with different scale factors
Currently, the same DriBuffers are used to display the cursor on both
monitors. This results in the pointer being visible at twice the scale
on the external monitor, when moving the cursor between the 2 screens of
different scale factors.
In the following steps :
1. unset cursor on screen1
2. upload new cursor into back buffer
3. set cursor on screen2
Steps 2 and 3 can actually be repeated.
The problem with the following sequence is that if the upload is
repeated within the vsync interval, then there is a chance to modify
the front buffer of the cursor displayed on screen1. This happens
because unsetting the cursor isn't going to take effect until
the next vsync.
This change moves the cursor buffer management from DriSurfaceFactory
into each DriWindowDelegateImpl. This means that we now have a couple
of cursor buffers (back and front) per monitor. This avoids one
monitor's cursor to be visible on the other.
BUG=431806
TEST=connect an external display on a link_freon build and move the cursor back end forth between the 2 screens
Review URL: https://codereview.chromium.org/
734053004
Cr-Commit-Position: refs/heads/master@{#306013}