<?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>150756</bug_id>
          
          <creation_ts>2015-10-31 01:16:01 -0700</creation_ts>
          <short_desc>[GTK] Use a RunLoop::Timer to schedule rendering frames in accelerated compositing mode</short_desc>
          <delta_ts>2015-11-01 01:32:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>150754</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138131</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-31 01:16:01 -0700</bug_when>
    <thetext>RunLoop::Timer uses a persistent source making it more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138136</commentid>
    <comment_count>1</comment_count>
      <attachid>264472</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-31 01:21:08 -0700</bug_when>
    <thetext>Created attachment 264472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138137</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-31 01:21:37 -0700</bug_when>
    <thetext>This will not build because it depends on patch attached to bug #150754</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138204</commentid>
    <comment_count>3</comment_count>
      <attachid>264472</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-31 14:45:45 -0700</bug_when>
    <thetext>Comment on attachment 264472
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=264472&amp;action=review

&gt; Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:69
&gt; +    // We use a GLib timer because otherwise GTK+ event handling during dragging can starve WebCore timers, which have a lower priority.
&gt; +    // Use a higher priority than WebCore timers.

I don’t understand what “we use a GLib timer” means here, since we are using a RunLoop timer. Should be clearer on that.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:107
&gt; +    static const double targetFramerate = 1 / 60.0;
&gt; +    // When rendering layers takes more time than the target delay (0.016), we end up scheduling layer flushes
&gt; +    // immediately. Since the layer flush timer has a higher priority than WebCore timers, these are never
&gt; +    // fired while we keep scheduling layer flushes immediately.
&gt; +    double current = monotonicallyIncreasingTime();
&gt; +    double timeToNextFlush = std::max(targetFramerate - (current - m_fireTime), 0.0);

We prefer use of std::chrono in new code, rather than the &quot;double in seconds&quot; style we wrote in older code. Would be good to return here and move to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138286</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-01 01:30:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 264472 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264472&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:69
&gt; &gt; +    // We use a GLib timer because otherwise GTK+ event handling during dragging can starve WebCore timers, which have a lower priority.
&gt; &gt; +    // Use a higher priority than WebCore timers.
&gt; 
&gt; I don’t understand what “we use a GLib timer” means here, since we are using
&gt; a RunLoop timer. Should be clearer on that.

Yes, the fact that the run loop timer implementation uses a glib timer is an implementation detail. I&apos;ll reword that.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:107
&gt; &gt; +    static const double targetFramerate = 1 / 60.0;
&gt; &gt; +    // When rendering layers takes more time than the target delay (0.016), we end up scheduling layer flushes
&gt; &gt; +    // immediately. Since the layer flush timer has a higher priority than WebCore timers, these are never
&gt; &gt; +    // fired while we keep scheduling layer flushes immediately.
&gt; &gt; +    double current = monotonicallyIncreasingTime();
&gt; &gt; +    double timeToNextFlush = std::max(targetFramerate - (current - m_fireTime), 0.0);
&gt; 
&gt; We prefer use of std::chrono in new code, rather than the &quot;double in
&gt; seconds&quot; style we wrote in older code. Would be good to return here and move
&gt; to that.

Ok, I&apos;ll do it in a different patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138287</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-01 01:32:14 -0800</bug_when>
    <thetext>Committed r191854: &lt;http://trac.webkit.org/changeset/191854&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264472</attachid>
            <date>2015-10-31 01:21:08 -0700</date>
            <delta_ts>2015-10-31 14:45:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ac-persistent-source.diff</filename>
            <type>text/plain</type>
            <size>10214</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZTI4MWRiLi4wMDZkNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTUtMTAtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBhIFJ1bkxvb3A6OlRpbWVyIHRvIHNjaGVkdWxlIHJlbmRl
cmluZyBmcmFtZXMgaW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbW9kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgUnVuTG9vcDo6VGltZXIg
aW5zdGVhZCBvZiBhIEdNYWluTG9vcFNvdXJjZSBmb3IgdGhlCisgICAgICAgIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIHJlbmRlciBsb29wIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlLAorICAg
ICAgICBzaW5jZSBSdW5Mb29wOjpUaW1lciB1c2VzIGEgcGVyc2lzdGVudCBzb3VyY2UuCisgICAg
ICAgIEFsbCB0aGUgbG9naWMgdG8gc2NoZWR1bGUgcmFtZXMgaGFzIGJlZW4gbW92ZWQgdG8gYSBo
ZWxwZXIKKyAgICAgICAgaW50ZXJuYWwgY2xhc3MgUmVuZGVyRnJhbWVTY2hlZHVsZXIuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6UmVu
ZGVyRnJhbWVTY2hlZHVsZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpS
ZW5kZXJGcmFtZVNjaGVkdWxlcjo6flJlbmRlckZyYW1lU2NoZWR1bGVyKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0
b3ApOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlu
b3VzSW1tZWRpYXRlRmx1c2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6
OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpuZXh0RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6cmVuZGVyRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3RrKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6cmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1c2hUaW1lckZpcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKwog
MjAxNS0xMC0zMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gTW92ZSB0aGUgc29ja2V0IHBvbGxpbmcgb2ZmIHRoZSBXb3JrUXVldWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDY5ZWY2YWIuLmI1Mjk3NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcApAQCAtNjEsNiArNjEsNzEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxl
cjo6UmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpmdW5jdGlvbjxib29sKCk+IHJlbmRlcmVyKQor
ICAgIDogbV9yZW5kZXJlcihXVEY6Om1vdmUocmVuZGVyZXIpKQorICAgICwgbV90aW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxl
cjo6cmVuZGVyRnJhbWUpCit7CisgICAgLy8gV2UgdXNlIGEgR0xpYiB0aW1lciBiZWNhdXNlIG90
aGVyd2lzZSBHVEsrIGV2ZW50IGhhbmRsaW5nIGR1cmluZyBkcmFnZ2luZyBjYW4gc3RhcnZlIFdl
YkNvcmUgdGltZXJzLCB3aGljaCBoYXZlIGEgbG93ZXIgcHJpb3JpdHkuCisgICAgLy8gVXNlIGEg
aGlnaGVyIHByaW9yaXR5IHRoYW4gV2ViQ29yZSB0aW1lcnMuCisgICAgbV90aW1lci5zZXRQcmlv
cml0eShHREtfUFJJT1JJVFlfUkVEUkFXIC0gMSk7Cit9CisKK0xheWVyVHJlZUhvc3RHdGs6OlJl
bmRlckZyYW1lU2NoZWR1bGVyOjp+UmVuZGVyRnJhbWVTY2hlZHVsZXIoKQoreworfQorCit2b2lk
IExheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpzdGFydCgpCit7CisgICAg
aWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZmlyZVRpbWUg
PSAwOworICAgIG5leHRGcmFtZSgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RHdGs6OlJlbmRl
ckZyYW1lU2NoZWR1bGVyOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNob3VsZFNraXBOZXh0RnJhbWVCZWNhdXNlT2ZDb250aW5vdXNJbW1l
ZGlhdGVGbHVzaGVzKGRvdWJsZSBjdXJyZW50LCBkb3VibGUgbGFzdEltbWVkaWF0ZUZsdXNoVGlt
ZSkKK3sKKyAgICAvLyAxMDBtcyBpcyBhYm91dCBhIHBlcmNlcHRhYmxlIGRlbGF5IGluIFVJLCBz
byB3aGVuIHNjaGVkdWxpbmcgbGF5ZXIgZmx1c2hlcyBpbW1lZGlhdGVseSBmb3IgbW9yZSB0aGFu
IDEwMG1zLAorICAgIC8vIHdlIHNraXAgdGhlIG5leHQgZnJhbWUgdG8gZW5zdXJlIHBlbmRpbmcg
dGltZXJzIGhhdmUgYSBjaGFuZ2UgdG8gYmUgZmlyZWQuCisgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBtYXhEdXJhdGlvbk9mSW1tZWRpYXRlRmx1c2hlcyA9IDAuMTAwOworICAgIGlmICghbGFzdElt
bWVkaWF0ZUZsdXNoVGltZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBsYXN0
SW1tZWRpYXRlRmx1c2hUaW1lICsgbWF4RHVyYXRpb25PZkltbWVkaWF0ZUZsdXNoZXMgPCBjdXJy
ZW50OworfQorCit2b2lkIExheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVyOjpu
ZXh0RnJhbWUoKQoreworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGFyZ2V0RnJhbWVyYXRlID0g
MSAvIDYwLjA7CisgICAgLy8gV2hlbiByZW5kZXJpbmcgbGF5ZXJzIHRha2VzIG1vcmUgdGltZSB0
aGFuIHRoZSB0YXJnZXQgZGVsYXkgKDAuMDE2KSwgd2UgZW5kIHVwIHNjaGVkdWxpbmcgbGF5ZXIg
Zmx1c2hlcworICAgIC8vIGltbWVkaWF0ZWx5LiBTaW5jZSB0aGUgbGF5ZXIgZmx1c2ggdGltZXIg
aGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gV2ViQ29yZSB0aW1lcnMsIHRoZXNlIGFyZSBuZXZl
cgorICAgIC8vIGZpcmVkIHdoaWxlIHdlIGtlZXAgc2NoZWR1bGluZyBsYXllciBmbHVzaGVzIGlt
bWVkaWF0ZWx5LgorICAgIGRvdWJsZSBjdXJyZW50ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CisgICAgZG91YmxlIHRpbWVUb05leHRGbHVzaCA9IHN0ZDo6bWF4KHRhcmdldEZyYW1l
cmF0ZSAtIChjdXJyZW50IC0gbV9maXJlVGltZSksIDAuMCk7CisgICAgaWYgKHRpbWVUb05leHRG
bHVzaCkKKyAgICAgICAgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lID0gMDsKKyAgICBlbHNlIGlm
ICghbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lKQorICAgICAgICBtX2xhc3RJbW1lZGlhdGVGbHVz
aFRpbWUgPSBjdXJyZW50OworCisgICAgaWYgKHNob3VsZFNraXBOZXh0RnJhbWVCZWNhdXNlT2ZD
b250aW5vdXNJbW1lZGlhdGVGbHVzaGVzKGN1cnJlbnQsIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGlt
ZSkpIHsKKyAgICAgICAgdGltZVRvTmV4dEZsdXNoID0gdGFyZ2V0RnJhbWVyYXRlOworICAgICAg
ICBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUgPSAwOworICAgIH0KKworICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KHRpbWVUb05leHRGbHVzaCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnJlbmRlckZyYW1lKCkKK3sKKyAgICBtX2ZpcmVUaW1lID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKCFtX3JlbmRlcmVyKCkgfHwg
bV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgbmV4dEZyYW1lKCk7Cit9
CisKIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdEd0az4gTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRl
KFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgUmVmUHRyPExheWVyVHJlZUhvc3RHdGs+IGhvc3Qg
PSBhZG9wdFJlZihuZXcgTGF5ZXJUcmVlSG9zdEd0ayh3ZWJQYWdlKSk7CkBAIC03Miw5ICsxMzcs
OSBAQCBMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UqIHdlYlBhZ2Up
CiAgICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCiAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKICAg
ICAsIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQotICAgICwgbV9sYXN0
SW1tZWRpYXRlRmx1c2hUaW1lKDApCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxl
ZCh0cnVlKQogICAgICwgbV92aWV3T3ZlcmxheVJvb3RMYXllcihudWxscHRyKQorICAgICwgbV9y
ZW5kZXJGcmFtZVNjaGVkdWxlcihzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OnJlbmRlckZy
YW1lLCB0aGlzKSkKIHsKIH0KIApAQCAtMjM3LDQ0ICszMDIsMTAgQEAgZmxvYXQgTGF5ZXJUcmVl
SG9zdEd0azo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQYWdlLT5w
YWdlU2NhbGVGYWN0b3IoKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZFNraXBOZXh0
RnJhbWVCZWNhdXNlT2ZDb250aW5vdXNJbW1lZGlhdGVGbHVzaGVzKGRvdWJsZSBjdXJyZW50LCBk
b3VibGUgbGFzdEltbWVkaWF0ZUZsdXNoVGltZSkKLXsKLSAgICAvLyAxMDBtcyBpcyBhYm91dCBh
IHBlcmNlcHRhYmxlIGRlbGF5IGluIFVJLCBzbyB3aGVuIHNjaGVkdWxpbmcgbGF5ZXIgZmx1c2hl
cyBpbW1lZGlhdGVseSBmb3IgbW9yZSB0aGFuIDEwMG1zLAotICAgIC8vIHdlIHNraXAgdGhlIG5l
eHQgZnJhbWUgdG8gZW5zdXJlIHBlbmRpbmcgdGltZXJzIGhhdmUgYSBjaGFuZ2UgdG8gYmUgZmly
ZWQuCi0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhEdXJhdGlvbk9mSW1tZWRpYXRlRmx1c2hl
cyA9IDAuMTAwOwotICAgIGlmICghbGFzdEltbWVkaWF0ZUZsdXNoVGltZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBsYXN0SW1tZWRpYXRlRmx1c2hUaW1lICsgbWF4RHVyYXRp
b25PZkltbWVkaWF0ZUZsdXNoZXMgPCBjdXJyZW50OwotfQotCi0vLyBVc2UgYSBoaWdoZXIgcHJp
b3JpdHkgdGhhbiBXZWJDb3JlIHRpbWVycy4KLXN0YXRpYyBjb25zdCBpbnQgbGF5ZXJGbHVzaFRp
bWVyUHJpb3JpdHkgPSBHREtfUFJJT1JJVFlfUkVEUkFXIC0gMTsKLQotdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpsYXllckZsdXNoVGltZXJGaXJlZCgpCitib29sIExheWVyVHJlZUhvc3RHdGs6OnJl
bmRlckZyYW1lKCkKIHsKLSAgICBkb3VibGUgZmlyZVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBmbHVzaEFuZFJlbmRlckxheWVycygpOwotICAgIGlmIChtX2xheWVy
Rmx1c2hUaW1lckNhbGxiYWNrLmlzU2NoZWR1bGVkKCkgfHwgIWRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCkuZGVzY2VuZGFudHNPclNlbGZI
YXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGNv
bnN0IGRvdWJsZSB0YXJnZXRGcmFtZXJhdGUgPSAxIC8gNjAuMDsKLSAgICAvLyBXaGVuIHJlbmRl
cmluZyBsYXllcnMgdGFrZXMgbW9yZSB0aW1lIHRoYW4gdGhlIHRhcmdldCBkZWxheSAoMC4wMTYp
LCB3ZSBlbmQgdXAgc2NoZWR1bGluZyBsYXllciBmbHVzaGVzCi0gICAgLy8gaW1tZWRpYXRlbHku
IFNpbmNlIHRoZSBsYXllciBmbHVzaCB0aW1lciBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBX
ZWJDb3JlIHRpbWVycywgdGhlc2UgYXJlIG5ldmVyCi0gICAgLy8gZmlyZWQgd2hpbGUgd2Uga2Vl
cCBzY2hlZHVsaW5nIGxheWVyIGZsdXNoZXMgaW1tZWRpYXRlbHkuCi0gICAgZG91YmxlIGN1cnJl
bnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBkb3VibGUgdGltZVRvTmV4
dEZsdXNoID0gc3RkOjptYXgodGFyZ2V0RnJhbWVyYXRlIC0gKGN1cnJlbnQgLSBmaXJlVGltZSks
IDAuMCk7Ci0gICAgaWYgKHRpbWVUb05leHRGbHVzaCkKLSAgICAgICAgbV9sYXN0SW1tZWRpYXRl
Rmx1c2hUaW1lID0gMDsKLSAgICBlbHNlIGlmICghbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lKQot
ICAgICAgICBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUgPSBjdXJyZW50OwotCi0gICAgaWYgKHNo
b3VsZFNraXBOZXh0RnJhbWVCZWNhdXNlT2ZDb250aW5vdXNJbW1lZGlhdGVGbHVzaGVzKGN1cnJl
bnQsIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZSkpIHsKLSAgICAgICAgdGltZVRvTmV4dEZsdXNo
ID0gdGFyZ2V0RnJhbWVyYXRlOwotICAgICAgICBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUgPSAw
OwotICAgIH0KLQotICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGVBZnRlckRl
bGF5KCJbV2ViS2l0XSBsYXllckZsdXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RH
dGs6OmxheWVyRmx1c2hUaW1lckZpcmVkLCB0aGlzKSwKLSAgICAgICAgc3RkOjpjaHJvbm86OmR1
cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0
aW9uPGRvdWJsZT4odGltZVRvTmV4dEZsdXNoKSksIGxheWVyRmx1c2hUaW1lclByaW9yaXR5KTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RM
YXllcikubGF5ZXIoKS5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpOwog
fQogCiBib29sIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCkBA
IC0zNDgsOSArMzc5LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzY2hlZHVsZUxheWVyRmx1
c2goKQogICAgIGlmICghbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgfHwgIW1fdGV4dHVy
ZU1hcHBlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gV2UgdXNlIGEgR0xpYiB0aW1lciBi
ZWNhdXNlIG90aGVyd2lzZSBHVEsrIGV2ZW50IGhhbmRsaW5nIGR1cmluZyBkcmFnZ2luZyBjYW4g
c3RhcnZlIFdlYkNvcmUgdGltZXJzLCB3aGljaCBoYXZlIGEgbG93ZXIgcHJpb3JpdHkuCi0gICAg
aWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmlzU2NoZWR1bGVkKCkpCi0gICAgICAgIG1f
bGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGUoIltXZWJLaXRdIGxheWVyRmx1c2hUaW1l
ciIsIHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQsIHRo
aXMpLCBsYXllckZsdXNoVGltZXJQcmlvcml0eSk7CisgICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxl
ci5zdGFydCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldExheWVyRmx1c2hTY2hl
ZHVsaW5nRW5hYmxlZChib29sIGxheWVyRmx1c2hpbmdFbmFibGVkKQpAQCAtMzc1LDcgKzQwNCw3
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFu
Z2VkKCkKIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgp
CiB7Ci0gICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5jYW5jZWwoKTsKKyAgICBtX3JlbmRl
ckZyYW1lU2NoZWR1bGVyLnN0b3AoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRW
aWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJv
b3RMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXggOWM2N2E2Ny4uMDdhMjI0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxv
b3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNjUsNiArNjUsMjUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
YXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgorCisgICAgY2xhc3MgUmVuZGVyRnJhbWVTY2hlZHVsZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpmdW5jdGlvbjxib29sKCk+KTsKKyAg
ICAgICAgflJlbmRlckZyYW1lU2NoZWR1bGVyKCk7CisKKyAgICAgICAgdm9pZCBzdGFydCgpOwor
ICAgICAgICB2b2lkIHN0b3AoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgcmVuZGVy
RnJhbWUoKTsKKyAgICAgICAgdm9pZCBuZXh0RnJhbWUoKTsKKworICAgICAgICBzdGQ6OmZ1bmN0
aW9uPGJvb2woKT4gbV9yZW5kZXJlcjsKKyAgICAgICAgUnVuTG9vcDo6VGltZXI8UmVuZGVyRnJh
bWVTY2hlZHVsZXI+IG1fdGltZXI7CisgICAgICAgIGRvdWJsZSBtX2ZpcmVUaW1lIHsgMCB9Owor
ICAgICAgICBkb3VibGUgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lIHsgMCB9OworICAgIH07CisK
ICAgICAvLyBMYXllclRyZWVIb3N0CiAgICAgdmlydHVhbCBjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCkgb3ZlcnJpZGU7CkBAIC04
Nyw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsK
ICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAKLSAgICB2b2lkIGxheWVyRmx1
c2hUaW1lckZpcmVkKCk7CisgICAgYm9vbCByZW5kZXJGcmFtZSgpOwogCiAgICAgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKIApAQCAtMTAwLDkgKzExOSw5IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OwogICAgIGRvdWJsZSBt
X2xhc3RJbW1lZGlhdGVGbHVzaFRpbWU7CiAgICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5n
RW5hYmxlZDsKLSAgICBHTWFpbkxvb3BTb3VyY2UgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjazsK
ICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3ZpZXdPdmVybGF5Um9vdExheWVyOwogICAg
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVNYXRyaXg7CisgICAgUmVuZGVy
RnJhbWVTY2hlZHVsZXIgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="289600"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>