<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>154070</bug_id>
          
          <creation_ts>2016-02-10 03:22:24 -0800</creation_ts>
          <short_desc>[Threaded Compositor] Flickering and rendering artifacts when resizing the web view</short_desc>
          <delta_ts>2016-06-14 00:47:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158562</dependson>
    
    <dependson>158564</dependson>
          <blocked>154066</blocked>
    
    <blocked>158615</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>svillar</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163443</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-10 03:22:24 -0800</bug_when>
    <thetext>Open MiniBrowser and resize the window to see the effects. There&apos;s flickering, and rendering artifacts at the top</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168482</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-26 05:57:58 -0800</bug_when>
    <thetext>I&apos;ve been investigating this and I think I know what&apos;s going on. First lets see how resize works in non-threaded compositor case. 

1- The web view is resized (size-allocate), and it notifies the DrawingArea.
2.- DrawingAreaProxyImpl creates a new backing store state ID and notifies the web process about it asking it to reply immediately. It waits for the reply up to 500ms.
3.- In the web process DrawingAreaImpl updates its backing store state ID to the given one, and sets the new size in the web page and layer tree host. then sends a message to the UI process that stops waiting.

This way, while the web process is updating for the new size, the UI process doesn&apos;t render anything, and when it finishes waiting, the backing stores in both web and UI are in sync in terms of size. 

This doesn&apos;t work with the threaded compositor and we end up rendering in the UI process with the new size while the web process is still using the old size. The problem is in the step 3), in non-threaded compositor case, the layer tree host updates everything (layer sizes), and it repaints so that when we reply back to the UI process, the layers are already using the new size and new contents have been rendered. In the threaded-compositor case this happens asynchronously, we have to go notify the compositing thread and when updated this notifies the main thread back. But when we reply to the UI process, the compositing thread hasn&apos;t been notified yet or it hasn&apos;t painted anything yet. So, I think we have to wait until everything has been updated to the new size and contents have been repainted to reply back to the UI process. In other words, we need to make ThreadedCoordinatedLayerTreeHost::viewportSizeChanged() sync and wait until everything has been updated, or make DrawingAreaImpl not reply back to the UI process after calling viewportSizeChanged() and add a wayt to be notified by the layer tree host when everything is ready to send the message back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169795</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-03-02 02:12:05 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;ve been investigating this and I think I know what&apos;s going on. First lets
&gt; see how resize works in non-threaded compositor case. 
&gt; 
&gt; 1- The web view is resized (size-allocate), and it notifies the DrawingArea.
&gt; 2.- DrawingAreaProxyImpl creates a new backing store state ID and notifies
&gt; the web process about it asking it to reply immediately. It waits for the
&gt; reply up to 500ms.
&gt; 3.- In the web process DrawingAreaImpl updates its backing store state ID to
&gt; the given one, and sets the new size in the web page and layer tree host.
&gt; then sends a message to the UI process that stops waiting.
&gt; 
&gt; This way, while the web process is updating for the new size, the UI process
&gt; doesn&apos;t render anything, and when it finishes waiting, the backing stores in
&gt; both web and UI are in sync in terms of size. 
&gt; 
&gt; This doesn&apos;t work with the threaded compositor and we end up rendering in
&gt; the UI process with the new size while the web process is still using the
&gt; old size. The problem is in the step 3), in non-threaded compositor case,
&gt; the layer tree host updates everything (layer sizes), and it repaints so
&gt; that when we reply back to the UI process, the layers are already using the
&gt; new size and new contents have been rendered. In the threaded-compositor
&gt; case this happens asynchronously, we have to go notify the compositing
&gt; thread and when updated this notifies the main thread back. But when we
&gt; reply to the UI process, the compositing thread hasn&apos;t been notified yet or
&gt; it hasn&apos;t painted anything yet. So, I think we have to wait until everything
&gt; has been updated to the new size and contents have been repainted to reply
&gt; back to the UI process. In other words, we need to make
&gt; ThreadedCoordinatedLayerTreeHost::viewportSizeChanged() sync and wait until
&gt; everything has been updated, or make DrawingAreaImpl not reply back to the
&gt; UI process after calling viewportSizeChanged() and add a wayt to be notified
&gt; by the layer tree host when everything is ready to send the message back.

This is why I think that UI side compositing is much more appealing from the user POV, because you see immediate response to your actions like resizing or scrolling. It does not really matter that you don&apos;t have the final rendering very quickly because you could still do things like scrolling, zooming or resizing with the last rendered content while waiting for the webprocess to do all the heavy rendering stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169798</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-03-02 02:16:09 -0800</bug_when>
    <thetext>We plan to move compositing to the UI process eventually, but at this point it&apos;s easier to do the transition in two steps, first move to the threaded compositor, and then move the compositor to a thread in the UI process. But I could be wrong and it easier to do this in one step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201182</commentid>
    <comment_count>4</comment_count>
      <attachid>280998</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-09 23:36:31 -0700</bug_when>
    <thetext>Created attachment 280998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201185</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-09 23:41:44 -0700</bug_when>
    <thetext>The patch doesn&apos;t apply because it depends on bugs #158564 and #158562</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201224</commentid>
    <comment_count>6</comment_count>
      <attachid>281008</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-10 05:58:29 -0700</bug_when>
    <thetext>Created attachment 281008
Rebased patch

I should apply now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201225</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 05:59:09 -0700</bug_when>
    <thetext>Attachment 281008 did not pass style-queue:


ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201551</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-06-11 03:05:31 -0700</bug_when>
    <thetext>I know that for non-threaded compositor task the resize is already an almost sync operation but making resizing in the threaded compositor sync as well seems a step in the wrong direction.

I think that being out of sync for some time is OK-ish. Isn&apos;t it possible to ask the WP to resize the backing store and return immediately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201797</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-12 23:23:40 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I know that for non-threaded compositor task the resize is already an almost
&gt; sync operation

It doesn&apos;t really matter whether to use the threaded compositor or not, the UI process sends a messages and keeps waiting until the resize is done, so it&apos;s *always* a sync operation.

&gt; but making resizing in the threaded compositor sync as well
&gt; seems a step in the wrong direction.

My first attempt to fix this was to wait until the resize is done in the compositor thread to reply back to the UI process, but it didn&apos;t really work. Between the time the task is scheduled and when it&apos;s done all other updates that happens in the compositor thread end upo producing flickering and rendering artifacts. Note that resizing is not a so common operation and it&apos;s usually done by user interaction, so it&apos;s impossible that the user notices any block or hang.

&gt; I think that being out of sync for some time is OK-ish.

Have you seen the effects of that? The flickering and rendering artifacts are embarrassing and annoying. Doing it sync makes everything smooth.

&gt; Isn&apos;t it possible to
&gt; ask the WP to resize the backing store and return immediately?

The main problem of this is that the backing store in this case is not in the web process, but in the UI process. In non-accelerated compositing mode there are two backing stores, one in the UI process and one in the web process. When there&apos;s a resize a message is sent to the web process that resizes its backing store and redraws. When it replies back to the UI process the backing store in the UI process is then resized and the new image is rendered. In AC mode the backing store in the Ui process is the redirected window, and the web process renders directly into it. So, when a resize happens, we need to resize the redirected window before sending the message the web process, then we send the message that updates the GL viewport to the new size and schedules a layer flush.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202119</commentid>
    <comment_count>10</comment_count>
      <attachid>281008</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-06-14 00:36:30 -0700</bug_when>
    <thetext>Comment on attachment 281008
Rebased patch

This should probably be revisited in the future, probably by changing the DrawingArea implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202124</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-14 00:47:33 -0700</bug_when>
    <thetext>Committed r202037: &lt;http://trac.webkit.org/changeset/202037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280998</attachid>
            <date>2016-06-09 23:36:31 -0700</date>
            <delta_ts>2016-06-10 05:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-tc-resize-sync.diff</filename>
            <type>text/plain</type>
            <size>5063</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkNDMwYWFiLi5hZjEwZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTYtMDYtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBGbGlja2VyaW5nIGFuZCByZW5kZXJp
bmcgYXJ0aWZhY3RzIHdoZW4gcmVzaXppbmcgdGhlIHdlYiB2aWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwNzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXNpemluZyB0aGUgd2ViIHZpZXcgaXMg
ZXhwZWN0ZWQgdG8gYmUgYSBzeW5jIG9wZXJhdGlvbiwgdGhlIFVJIHByb2Nlc3MgY3JlYXRlcyBh
IG5ldyBiYWNraW5nIHN0b3JlIHN0YXRlIElELAorICAgICAgICBzZW5kcyBVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZSBtZXNzYWdlIHdpdGggdGhlIGZsYWcgUmVzcG9uZEltbWVkaWF0ZWx5IHRvIHRo
ZSB3ZWIgcHJvY2VzcyBhbmQgd2FpdHMgdXAgdG8gNTAwbXMKKyAgICAgICAgZm9yIHRoZSByZXBs
eSAoRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUgbWVzc2FnZSkuIFdoZW4gdXNpbmcgdGhlIHRo
cmVhZGVkIGNvbXBvc2l0b3IsIHdlIHNjaGVkdWxlIGEgdGFzayBpbgorICAgICAgICB0aGUgY29t
cG9zaXRpbmcgdGhyZWFkIHRvIHVwZGF0ZSB0aGUgdmlld3BvcnQgc2l6ZSwgYW5kIHJldHVybiBp
bW1lZGlhdGVseSwgc28gdGhhdCB3ZSByZXBseSB0byB0aGUgVUkgcHJvY2VzcworICAgICAgICBi
ZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBoYXMgYWN0dWFsbHkgdXBkYXRlZCBpdHMgc2l6
ZS4gVGhlcmUncyBhIG1vbWVudCBpbiB3aGljaCBzaXplcyBhcmUgb3V0IG9mIHN5bmMKKyAgICAg
ICAgY2F1c2luZyB0aGUgZmxpY2tlcmluZyBhbmQgcmVuZGVyaW5nIGFydGlmYWN0cywgdGhlIFVJ
IHByb2Nlc3MgY29udGludWVzIHJlbmRlcmluZyBhdCB0aGUgbmV3IHNpemUsIHdoaWxlIHRoZQor
ICAgICAgICB3ZWIgcHJvY2VzcyBpcyBzdGlsbCByZW5kZXJpbmcgYXQgdGhlIHByZXZpb3VzIHNp
emUuIFdlIGNhbiBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcganVzdCBieSBtYWtpbmcgdGhl
CisgICAgICAgIHJlc2l6ZSB0YXNrIHN5bmNocm9ub3VzIGluIHRoZSB0aHJlYWRlZCBjb21wb3Np
dG9yLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0
aW5nUnVuTG9vcDo6cGVyZm9ybVRhc2tTeW5jKTogQWRkIHN5bmMgdmVyc2lvbiBvZiBwZXJmb3Jt
VGFzaygpLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUp
OiBVc2UgcGVyZm9ybVRhc2tTeW5jKCkuCisKKzIwMTYtMDYtMDkgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9y
XSBDb250ZW50IGFuZCB2aWV3cG9ydCBzaXplcyBhcmUgbWl4ZWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU2NAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
Q29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4
IGYwNTkwMTAuLmY0YWNlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0zNyw3ICszNyw2IEBAIENvbXBv
c2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiB1cGRhdGVGdW5jdGlvbikKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkpCiAg
ICAgLCBtX3VwZGF0ZVRpbWVyKG1fcnVuTG9vcCwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6
dXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVG
dW5jdGlvbikpCi0gICAgLCBtX2xhc3RVcGRhdGVUaW1lKDApCiB7CiB9CiAKQEAgLTQ3LDYgKzQ2
LDE4IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFzayhzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9ydW5Mb29wLmRpc3BhdGNoKFdURk1vdmUoZnVu
Y3Rpb24pKTsKIH0KIAordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11
dGV4KTsKKyAgICBtX3J1bkxvb3AuZGlzcGF0Y2goW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbildIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kaXNwYXRjaFN5bmNDb25k
aXRpb25NdXRleCk7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgICAgIG1fZGlzcGF0Y2hTeW5j
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIH0pOworICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0
aW9uLndhaXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleCk7Cit9CisKIHZvaWQgQ29tcG9z
aXRpbmdSdW5Mb29wOjpzZXRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcgdGltaW5nKQogewogICAg
IGlmIChtX3VwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRp
bmdSdW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKaW5kZXggMzg2MGEyOC4uZmMw
Zjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9zaXRp
bmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICB2b2lkIHBlcmZvcm1U
YXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBwZXJmb3JtVGFza1N5bmMo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogICAgIHZvaWQgc2V0VXBkYXRlVGltZXIoVXBk
YXRlVGltaW5nIHRpbWluZyA9IEltbWVkaWF0ZSk7CiAgICAgdm9pZCBzdG9wVXBkYXRlVGltZXIo
KTsKQEAgLTU5LDggKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwog
ICAgIFJ1bkxvb3A6OlRpbWVyPENvbXBvc2l0aW5nUnVuTG9vcD4gbV91cGRhdGVUaW1lcjsKICAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fdXBkYXRlRnVuY3Rpb247CisgICAgTG9jayBtX2Rp
c3BhdGNoU3luY0NvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2Rpc3BhdGNoU3luY0Nv
bmRpdGlvbjsKIAotICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1lOworICAgIGRvdWJsZSBtX2xh
c3RVcGRhdGVUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
Y3BwCmluZGV4IGU3MDQ5MWYuLjFjNjhlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBz
Y2FsZSkKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9yPiBwcm90
ZWN0b3IodGhpcyk7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrKFtwcm90
ZWN0b3IsIHNpemVdIHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5j
KFtwcm90ZWN0b3IsIHNpemVdIHsKICAgICAgICAgcHJvdGVjdG9yLT52aWV3cG9ydENvbnRyb2xs
ZXIoKS0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOwogICAgIH0pOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281008</attachid>
            <date>2016-06-10 05:58:29 -0700</date>
            <delta_ts>2016-06-14 00:36:30 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-tc-resize-sync.diff</filename>
            <type>text/plain</type>
            <size>5063</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZTJhZmNhLi4xZjNiMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTYtMDYtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBGbGlja2VyaW5nIGFuZCByZW5kZXJp
bmcgYXJ0aWZhY3RzIHdoZW4gcmVzaXppbmcgdGhlIHdlYiB2aWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQwNzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXNpemluZyB0aGUgd2ViIHZpZXcgaXMg
ZXhwZWN0ZWQgdG8gYmUgYSBzeW5jIG9wZXJhdGlvbiwgdGhlIFVJIHByb2Nlc3MgY3JlYXRlcyBh
IG5ldyBiYWNraW5nIHN0b3JlIHN0YXRlIElELAorICAgICAgICBzZW5kcyBVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZSBtZXNzYWdlIHdpdGggdGhlIGZsYWcgUmVzcG9uZEltbWVkaWF0ZWx5IHRvIHRo
ZSB3ZWIgcHJvY2VzcyBhbmQgd2FpdHMgdXAgdG8gNTAwbXMKKyAgICAgICAgZm9yIHRoZSByZXBs
eSAoRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUgbWVzc2FnZSkuIFdoZW4gdXNpbmcgdGhlIHRo
cmVhZGVkIGNvbXBvc2l0b3IsIHdlIHNjaGVkdWxlIGEgdGFzayBpbgorICAgICAgICB0aGUgY29t
cG9zaXRpbmcgdGhyZWFkIHRvIHVwZGF0ZSB0aGUgdmlld3BvcnQgc2l6ZSwgYW5kIHJldHVybiBp
bW1lZGlhdGVseSwgc28gdGhhdCB3ZSByZXBseSB0byB0aGUgVUkgcHJvY2VzcworICAgICAgICBi
ZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHRocmVhZCBoYXMgYWN0dWFsbHkgdXBkYXRlZCBpdHMgc2l6
ZS4gVGhlcmUncyBhIG1vbWVudCBpbiB3aGljaCBzaXplcyBhcmUgb3V0IG9mIHN5bmMKKyAgICAg
ICAgY2F1c2luZyB0aGUgZmxpY2tlcmluZyBhbmQgcmVuZGVyaW5nIGFydGlmYWN0cywgdGhlIFVJ
IHByb2Nlc3MgY29udGludWVzIHJlbmRlcmluZyBhdCB0aGUgbmV3IHNpemUsIHdoaWxlIHRoZQor
ICAgICAgICB3ZWIgcHJvY2VzcyBpcyBzdGlsbCByZW5kZXJpbmcgYXQgdGhlIHByZXZpb3VzIHNp
emUuIFdlIGNhbiBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcganVzdCBieSBtYWtpbmcgdGhl
CisgICAgICAgIHJlc2l6ZSB0YXNrIHN5bmNocm9ub3VzIGluIHRoZSB0aHJlYWRlZCBjb21wb3Np
dG9yLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0
aW5nUnVuTG9vcDo6cGVyZm9ybVRhc2tTeW5jKTogQWRkIHN5bmMgdmVyc2lvbiBvZiBwZXJmb3Jt
VGFzaygpLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUp
OiBVc2UgcGVyZm9ybVRhc2tTeW5jKCkuCisKKzIwMTYtMDYtMTAgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9y
XSBDb250ZW50IGFuZCB2aWV3cG9ydCBzaXplcyBhcmUgbWl4ZWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU2NAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
Q29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCmluZGV4
IGYwNTkwMTAuLmY0YWNlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC0zNyw3ICszNyw2IEBAIENvbXBv
c2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiB1cGRhdGVGdW5jdGlvbikKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkpCiAg
ICAgLCBtX3VwZGF0ZVRpbWVyKG1fcnVuTG9vcCwgdGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6
dXBkYXRlVGltZXJGaXJlZCkKICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVG
dW5jdGlvbikpCi0gICAgLCBtX2xhc3RVcGRhdGVUaW1lKDApCiB7CiB9CiAKQEAgLTQ3LDYgKzQ2
LDE4IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFzayhzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9ydW5Mb29wLmRpc3BhdGNoKFdURk1vdmUoZnVu
Y3Rpb24pKTsKIH0KIAordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11
dGV4KTsKKyAgICBtX3J1bkxvb3AuZGlzcGF0Y2goW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbildIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kaXNwYXRjaFN5bmNDb25k
aXRpb25NdXRleCk7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgICAgIG1fZGlzcGF0Y2hTeW5j
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIH0pOworICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0
aW9uLndhaXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleCk7Cit9CisKIHZvaWQgQ29tcG9z
aXRpbmdSdW5Mb29wOjpzZXRVcGRhdGVUaW1lcihVcGRhdGVUaW1pbmcgdGltaW5nKQogewogICAg
IGlmIChtX3VwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRp
bmdSdW5Mb29wLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKaW5kZXggMzg2MGEyOC4uZmMw
Zjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9zaXRp
bmdSdW5Mb29wKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CiAKICAgICB2b2lkIHBlcmZvcm1U
YXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdm9pZCBwZXJmb3JtVGFza1N5bmMo
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmKTsKIAogICAgIHZvaWQgc2V0VXBkYXRlVGltZXIoVXBk
YXRlVGltaW5nIHRpbWluZyA9IEltbWVkaWF0ZSk7CiAgICAgdm9pZCBzdG9wVXBkYXRlVGltZXIo
KTsKQEAgLTU5LDggKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwog
ICAgIFJ1bkxvb3A6OlRpbWVyPENvbXBvc2l0aW5nUnVuTG9vcD4gbV91cGRhdGVUaW1lcjsKICAg
ICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fdXBkYXRlRnVuY3Rpb247CisgICAgTG9jayBtX2Rp
c3BhdGNoU3luY0NvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2Rpc3BhdGNoU3luY0Nv
bmRpdGlvbjsKIAotICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1lOworICAgIGRvdWJsZSBtX2xh
c3RVcGRhdGVUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
Y3BwCmluZGV4IGU3MDQ5MWYuLjFjNjhlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBz
Y2FsZSkKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9yPiBwcm90
ZWN0b3IodGhpcyk7Ci0gICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrKFtwcm90
ZWN0b3IsIHNpemVdIHsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5j
KFtwcm90ZWN0b3IsIHNpemVdIHsKICAgICAgICAgcHJvdGVjdG9yLT52aWV3cG9ydENvbnRyb2xs
ZXIoKS0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOwogICAgIH0pOwogfQo=
</data>
<flag name="review"
          id="304875"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>