<?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>137513</bug_id>
          
          <creation_ts>2014-10-08 00:28:16 -0700</creation_ts>
          <short_desc>[GLib] Add a simple GMainLoopSource variant</short_desc>
          <delta_ts>2014-10-09 08:48:06 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040227</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-10-08 00:28:16 -0700</bug_when>
    <thetext>Add a simpler GMainLoopSource implementation that creates only one GSource during its lifetime. That GSource then has its ready time updated as required in order for the dispatch to occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040228</commentid>
    <comment_count>1</comment_count>
      <attachid>239460</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-10-08 00:34:34 -0700</bug_when>
    <thetext>Created attachment 239460
WIP

This is a work-in-progress, showing the basic idea.

Adds the GMainLoopSource::Simple class which can for now only handle void callbacks. The source has its ready time updated only when a new dispatch is scheduled. The source remains attached to the context throughout its lifetime (which equates the lifetime of the GMainLoopSource::Simple object).

The shared timer and layer flush timer in LayerTreeHostGtk are converted to using GMainLoopSource::Simple as an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040236</commentid>
    <comment_count>2</comment_count>
      <attachid>239460</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-08 01:37:58 -0700</bug_when>
    <thetext>Comment on attachment 239460
WIP

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

This is independent of the split in any case, we would still need cancellables and mutexes for thread safe sources, and we don&apos;t need that for sources used by the same thread. Instead of creating a new class, we could create a new GSource that is created on demand when scheduled is called for a non repeating source with no destroy func, for example.

&gt; Source/WTF/wtf/gobject/GMainLoopSource.cpp:475
&gt; +    g_source_set_ready_time(m_source.get(), g_get_monotonic_time() + delay.count() * 1000);

My main concern of this approach is that it works because the current glib implementation allows it, but it hasn&apos;t been thought to be used this way, I think

&gt; Source/WTF/wtf/gobject/GMainLoopSource.cpp:502
&gt; +    [](GSource*, GSourceFunc callback, gpointer userData) -&gt; gboolean
&gt; +    {
&gt; +        return callback(userData);
&gt; +    },

This will not work for repeating sources that will be marked as destroyed if they return Stop. I think you could call set_ready_time here, and return G_SOURCE_CONTINUE unconditionally here as well to make it clear this source will not be destroyed.

&gt; Source/WebCore/platform/gtk/SharedTimerGtk.cpp:36
&gt; +static void (*sharedTimerFiredFunction)() = nullptr;

I don&apos;t think you need to initialize global static vars to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040513</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-10-09 01:39:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WTF/wtf/gobject/GMainLoopSource.cpp:475
&gt; &gt; +    g_source_set_ready_time(m_source.get(), g_get_monotonic_time() + delay.count() * 1000);
&gt; 
&gt; My main concern of this approach is that it works because the current glib implementation allows it, but it hasn&apos;t been thought to be used this way, I think

It&apos;s essentially a timeout source with a dynamic interval that&apos;s updated on demand. But whatever the case, we can ask about it with GLib developers on their mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040519</commentid>
    <comment_count>4</comment_count>
      <attachid>239526</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-09 04:01:59 -0700</bug_when>
    <thetext>Created attachment 239526
Same optimization on top of patch to split GMainLoopSource

This is how I would apply your optimization on top of the split.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040553</commentid>
    <comment_count>5</comment_count>
      <attachid>239460</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-09 08:48:06 -0700</bug_when>
    <thetext>Comment on attachment 239460
WIP

I&apos;m more and more convinced about this approach of a separate class, however, I would not make a subclass, but a different class with a different name. Since in the end it&apos;s quite different to GMainLoopSource (it&apos;s restricted to non repeating timeout sources, without destroy functions, non thread safe, etc.). It could be something like GPersistentSource, for example. And instead of schedule, I would use fire, for example, and isPending().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239460</attachid>
            <date>2014-10-08 00:34:34 -0700</date>
            <delta_ts>2014-10-09 08:48:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>gms.patch</filename>
            <type>text/plain</type>
            <size>7831</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dNYWluTG9vcFNvdXJjZS5jcHAJKHJldmlz
aW9uIDE3NDQxOSkKKysrIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3NyBAQAogICAgICAgICBkZXN0cm95Q2Fs
bGJhY2soKTsKIH0KIAorR01haW5Mb29wU291cmNlOjpTaW1wbGU6OlNpbXBsZShjb25zdCBjaGFy
KiBuYW1lLCBpbnQgcHJpb3JpdHkpCisgICAgOiBtX3NvdXJjZShnX3NvdXJjZV9uZXcoJm1fc291
cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkpKQorICAgICwgbV9mdW5jdGlvbihudWxscHRy
KQorICAgICwgbV9zdGF0dXMoUmVhZHkpCit7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9zb3Vy
Y2UuZ2V0KCksIG5hbWUpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3NvdXJjZS5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oc2ltcGxlU291cmNlQ2FsbGJhY2spLCB0
aGlzLCBudWxscHRyKTsKKyAgICBpZiAocHJpb3JpdHkgIT0gR19QUklPUklUWV9ERUZBVUxUKQor
ICAgICAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV9zb3VyY2UuZ2V0KCksIHByaW9yaXR5KTsK
KyAgICBnX3NvdXJjZV9hdHRhY2gobV9zb3VyY2UuZ2V0KCksIG51bGxwdHIpOworfQorCitHTWFp
bkxvb3BTb3VyY2U6OlNpbXBsZTo6U2ltcGxlKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gZnVuY3Rpb24sIGludCBwcmlvcml0eSkKKyAgICA6IG1fc291cmNlKGdfc291
cmNlX25ldygmbV9zb3VyY2VGdW5jdGlvbnMsIHNpemVvZihHU291cmNlKSkpCisgICAgLCBtX2Z1
bmN0aW9uKFdURjo6bW92ZShmdW5jdGlvbikpCisgICAgLCBtX3N0YXR1cyhSZWFkeSkKK3sKKyAg
ICBBU1NFUlQobV9mdW5jdGlvbik7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9zb3VyY2UuZ2V0
KCksIG5hbWUpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3NvdXJjZS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oc2ltcGxlU291cmNlQ2FsbGJhY2spLCB0aGlzLCBu
dWxscHRyKTsKKyAgICBpZiAocHJpb3JpdHkgIT0gR19QUklPUklUWV9ERUZBVUxUKQorICAgICAg
ICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV9zb3VyY2UuZ2V0KCksIHByaW9yaXR5KTsKKyAgICBn
X3NvdXJjZV9hdHRhY2gobV9zb3VyY2UuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIEdNYWlu
TG9vcFNvdXJjZTo6U2ltcGxlOjpzY2hlZHVsZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRl
bGF5KQoreworICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCBnX2dl
dF9tb25vdG9uaWNfdGltZSgpICsgZGVsYXkuY291bnQoKSAqIDEwMDApOworICAgIG1fc3RhdHVz
ID0gU2NoZWR1bGVkOworfQorCit2b2lkIEdNYWluTG9vcFNvdXJjZTo6U2ltcGxlOjpzY2hlZHVs
ZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChmdW5jdGlvbik7CisgICAgbV9mdW5jdGlvbiA9IFdU
Rjo6bW92ZShmdW5jdGlvbik7CisKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJj
ZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGRlbGF5LmNvdW50KCkgKiAxMDAwKTsK
KyAgICBtX3N0YXR1cyA9IFNjaGVkdWxlZDsKK30KKwordm9pZCBHTWFpbkxvb3BTb3VyY2U6OlNp
bXBsZTo6Y2FuY2VsKCkKK3sKKyAgICBBU1NFUlQobV9zb3VyY2UpOworICAgIGdfc291cmNlX3Nl
dF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAtMSk7CisgICAgbV9zdGF0dXMgPSBSZWFkeTsK
K30KKworR1NvdXJjZUZ1bmNzIEdNYWluTG9vcFNvdXJjZTo6U2ltcGxlOjptX3NvdXJjZUZ1bmN0
aW9ucyA9IHsKKyAgICBudWxscHRyLCAvLyBwcmVwYXJlCisgICAgbnVsbHB0ciwgLy8gY2hlY2sK
KyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdTb3VyY2UqLCBHU291cmNlRnVuYyBjYWxsYmFjaywg
Z3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuCisgICAgeworICAgICAgICByZXR1cm4gY2Fs
bGJhY2sodXNlckRhdGEpOworICAgIH0sCisgICAgbnVsbHB0ciwgLy8gZmluYWxpemUKKyAgICBu
dWxscHRyLCAvLyBjbG9zdXJlX2NhbGxiYWNrCisgICAgbnVsbHB0ciAvLyBjbG9zdXJlX21hcnNo
YWxsCit9OworCitnYm9vbGVhbiBHTWFpbkxvb3BTb3VyY2U6OlNpbXBsZTo6c2ltcGxlU291cmNl
Q2FsbGJhY2soR01haW5Mb29wU291cmNlOjpTaW1wbGUqIHNvdXJjZSkKK3sKKyAgICBBU1NFUlQo
bV9mdW5jdGlvbik7CisKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UtPm1fc291
cmNlLmdldCgpLCAtMSk7CisgICAgc291cmNlLT5tX3N0YXR1cyA9IERpc3BhdGNoaW5nOworICAg
IHNvdXJjZS0+bV9mdW5jdGlvbigpOworICAgIHNvdXJjZS0+bV9zdGF0dXMgPSBSZWFkeTsKKyAg
ICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYgLy8gVVNFKEdMSUIpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dNYWluTG9v
cFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01haW5Mb29w
U291cmNlLmgJKHJldmlzaW9uIDE3NDQxOSkKKysrIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01h
aW5Mb29wU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDMwIEBACiAgICAgc3Rh
dGljIHZvaWQgc2NoZWR1bGVBZnRlckRlbGF5QW5kRGVsZXRlT25EZXN0cm95KGNvbnN0IGNoYXIq
IG5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpjaHJvbm86OnNlY29uZHMsIGludCBw
cmlvcml0eSA9IEdfUFJJT1JJVFlfREVGQVVMVCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRlc3Ry
b3lGdW5jdGlvbiA9IG51bGxwdHIsIEdNYWluQ29udGV4dCogPSBudWxscHRyKTsKICAgICBzdGF0
aWMgdm9pZCBzY2hlZHVsZUFmdGVyRGVsYXlBbmREZWxldGVPbkRlc3Ryb3koY29uc3QgY2hhciog
bmFtZSwgc3RkOjpmdW5jdGlvbjxib29sKCk+LCBzdGQ6OmNocm9ubzo6c2Vjb25kcywgaW50IHBy
aW9yaXR5ID0gR19QUklPUklUWV9ERUZBVUxULCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGVzdHJv
eUZ1bmN0aW9uID0gbnVsbHB0ciwgR01haW5Db250ZXh0KiA9IG51bGxwdHIpOwogCisgICAgY2xh
c3MgU2ltcGxlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2ltcGxlKTsKKyAgICBw
dWJsaWM6CisgICAgICAgIFNpbXBsZShjb25zdCBjaGFyKiwgaW50IHByaW9yaXR5ID0gR19QUklP
UklUWV9ERUZBVUxUKTsKKyAgICAgICAgU2ltcGxlKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4sIGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfREVGQVVMVCk7CisKKyAg
ICAgICAgdm9pZCBzY2hlZHVsZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKKyAgICAgICAg
dm9pZCBzY2hlZHVsZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+KTsKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKworICAgICAgICBib29sIGlzQWN0aXZl
KCkgeyByZXR1cm4gbV9zdGF0dXMgIT0gUmVhZHk7IH0KKyAgICAgICAgYm9vbCBpc1NjaGVkdWxl
ZCgpIHsgcmV0dXJuIG1fc3RhdHVzID09IFNjaGVkdWxlZDsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgc3RhdGljIEdTb3VyY2VGdW5jcyBtX3NvdXJjZUZ1bmN0aW9uczsKKyAgICAgICAgc3Rh
dGljIGdib29sZWFuIHNpbXBsZVNvdXJjZUNhbGxiYWNrKFNpbXBsZSopOworCisgICAgICAgIGVu
dW0gU3RhdHVzIHsgUmVhZHksIFNjaGVkdWxlZCwgRGlzcGF0Y2hpbmcgfTsKKworICAgICAgICBH
UmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOworICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IG1fZnVuY3Rpb247CisgICAgICAgIFN0YXR1cyBtX3N0YXR1czsKKyAgICB9OworCiBwcml2YXRl
OgogICAgIHN0YXRpYyBHTWFpbkxvb3BTb3VyY2UmIGNyZWF0ZSgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAJKHJldmlzaW9uIDE3
NDQxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIEdNYWluTG9vcFNvdXJjZSBnU2hhcmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNo
YXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKK3N0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJl
ZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKK3N0YXRpYyB2b2lkIHNoYXJlZFRpbWVyRmlyZSgpCit7
CisgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Cit9CitzdGF0aWMgR01haW5Mb29wU291
cmNlOjpTaW1wbGUgZ1NoYXJlZFRpbWVyKCJbV2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxs
YmFjayIsIHNoYXJlZFRpbWVyRmlyZSwgR0RLX1BSSU9SSVRZX1JFRFJBVyk7CiAKIHZvaWQgc2V0
U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQogewpAQCAtNDYsOSArNTAsNyBA
QAogdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7CiAg
ICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICBnU2hhcmVkVGltZXIu
c2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pLAotICAgICAg
ICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihz
dGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpLCBHREtfUFJJT1JJVFlfUkVE
UkFXKTsKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGUoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJs
ZT4oaW50ZXJ2YWwpKSk7CiB9CiAKIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmNwcAkocmV2aXNpb24gMTc0NDE5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsNyBAQAogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFs
c2UpCiAgICAgLCBtX2xhc3RGbHVzaFRpbWUoMCkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxp
bmdFbmFibGVkKHRydWUpCisgICAgLCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrKCJbV2ViS2l0
XSBsYXllckZsdXNoVGltZXIiLCBzdGQ6OmJpbmQoJkxheWVyVHJlZUhvc3RHdGs6OmxheWVyRmx1
c2hUaW1lckZpcmVkLCB0aGlzKSwgR0RLX1BSSU9SSVRZX0VWRU5UUykKIHsKIH0KIApAQCAtMjU4
LDggKzI1OSw3IEBACiAgICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmlzU2NoZWR1
bGVkKCkgJiYgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5kZXNjZW5k
YW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKSB7CiAgICAgICAgIGNvbnN0IGRvdWJs
ZSB0YXJnZXRGUFMgPSA2MDsKICAgICAgICAgZG91YmxlIG5leHRGbHVzaCA9IHN0ZDo6bWF4KCgx
IC8gdGFyZ2V0RlBTKSAtIChjdXJyZW50VGltZSgpIC0gbV9sYXN0Rmx1c2hUaW1lKSwgMC4wKTsK
LSAgICAgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5zY2hlZHVsZUFmdGVyRGVsYXkoIltX
ZWJLaXRdIGxheWVyRmx1c2hUaW1lciIsIHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6bGF5
ZXJGbHVzaFRpbWVyRmlyZWQsIHRoaXMpLAotICAgICAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0
aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9u
PGRvdWJsZT4obmV4dEZsdXNoKSksIEdES19QUklPUklUWV9FVkVOVFMpOworICAgICAgICBtX2xh
eWVyRmx1c2hUaW1lckNhbGxiYWNrLnNjaGVkdWxlKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0
PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+
KG5leHRGbHVzaCkpKTsKICAgICB9CiB9CiAKQEAgLTM1OSw3ICszNTksNyBAQAogCiAgICAgLy8g
V2UgdXNlIGEgR0xpYiB0aW1lciBiZWNhdXNlIG90aGVyd2lzZSBHVEsrIGV2ZW50IGhhbmRsaW5n
IGR1cmluZyBkcmFnZ2luZyBjYW4gc3RhcnZlIFdlYkNvcmUgdGltZXJzLCB3aGljaCBoYXZlIGEg
bG93ZXIgcHJpb3JpdHkuCiAgICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLmlzU2No
ZWR1bGVkKCkpCi0gICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2suc2NoZWR1bGUoIltX
ZWJLaXRdIGxheWVyRmx1c2hUaW1lciIsIHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6bGF5
ZXJGbHVzaFRpbWVyRmlyZWQsIHRoaXMpLCBHREtfUFJJT1JJVFlfRVZFTlRTKTsKKyAgICAgICAg
bV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5zY2hlZHVsZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzKDApKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRMYXllckZsdXNoU2NoZWR1
bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5oCShyZXZpc2lvbiAxNzQ0MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3
IEBACiAgICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OwogICAgIGRvdWJs
ZSBtX2xhc3RGbHVzaFRpbWU7CiAgICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxl
ZDsKLSAgICBHTWFpbkxvb3BTb3VyY2UgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjazsKKyAgICBH
TWFpbkxvb3BTb3VyY2U6OlNpbXBsZSBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239526</attachid>
            <date>2014-10-09 04:01:59 -0700</date>
            <delta_ts>2014-10-09 04:01:59 -0700</delta_ts>
            <desc>Same optimization on top of patch to split GMainLoopSource</desc>
            <filename>wtf-wip-main-loop-source-persistent.diff</filename>
            <type>text/plain</type>
            <size>7915</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01haW5Mb29wU291cmNlLmNwcAppbmRleCBlNWQ1OTBm
Li5lZWI1ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dNYWluTG9vcFNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuY3Bw
CkBAIC03Myw2ICs3Myw5IEBAIHZvaWQgR01haW5Mb29wU291cmNlOjpjYW5jZWwoKQogICAgIC8v
IEEgdmFsaWQgY29udGV4dCBzaG91bGQgb25seSBiZSBwcmVzZW50IGlmIEdNYWluTG9vcFNvdXJj
ZSBpcyBpbiB0aGUgU2NoZWR1bGVkIG9yIERpc3BhdGNoaW5nIHN0YXRlLgogICAgIEFTU0VSVCgh
bV9jb250ZXh0LnNvdXJjZSB8fCBtX3N0YXR1cyA9PSBTY2hlZHVsZWQgfHwgbV9zdGF0dXMgPT0g
RGlzcGF0Y2hpbmcpOwogCisgICAgaWYgKG1fcGVyc2lzdGVudFNvdXJjZSkKKyAgICAgICAgZ19z
b3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9wZXJzaXN0ZW50U291cmNlLmdldCgpLCAtMSk7CisKICAg
ICBtX3N0YXR1cyA9IFJlYWR5OwogCiAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwobV9jb250ZXh0
LnNvY2tldENhbmNlbGxhYmxlLmdldCgpKTsKQEAgLTgxLDkgKzg0LDI1IEBAIHZvaWQgR01haW5M
b29wU291cmNlOjpjYW5jZWwoKQogICAgICAgICByZXR1cm47CiAKICAgICBDb250ZXh0IGNvbnRl
eHQgPSBXVEY6Om1vdmUobV9jb250ZXh0KTsKLSAgICBjb250ZXh0LmRlc3Ryb3lTb3VyY2UoKTsK
KyAgICBpZiAobV9wZXJzaXN0ZW50U291cmNlLmdldCgpICE9IGNvbnRleHQuc291cmNlLmdldCgp
KQorICAgICAgICBjb250ZXh0LmRlc3Ryb3lTb3VyY2UoKTsKIH0KIAorc3RhdGljIEdTb3VyY2VG
dW5jcyBwZXJzaXN0ZW50U291cmNlRnVuY3Rpb25zID0geworICAgIG51bGxwdHIsIC8vIHByZXBh
cmUKKyAgICBudWxscHRyLCAvLyBjaGVjaworICAgIC8vIGRpc3BhdGNoCisgICAgW10oR1NvdXJj
ZSogc291cmNlLCBHU291cmNlRnVuYyBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdi
b29sZWFuCisgICAgeworICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UsIC0x
KTsKKyAgICAgICAgY2FsbGJhY2sodXNlckRhdGEpOworICAgICAgICByZXR1cm4gR19TT1VSQ0Vf
Q09OVElOVUU7CisgICAgfSwKKyAgICBudWxscHRyLCAvLyBmaW5hbGl6ZQorICAgIG51bGxwdHIs
IC8vIGNsb3N1cmVfY2FsbGJhY2sKKyAgICBudWxscHRyIC8vIGNsb3N1cmVfbWFyc2hhbGwKK307
CisKIHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUlkbGVTb3VyY2UoY29uc3QgY2hhciog
bmFtZSwgR1NvdXJjZUZ1bmMgc291cmNlRnVuY3Rpb24sIGludCBwcmlvcml0eSwgR01haW5Db250
ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVChtX3N0YXR1cyA9PSBSZWFkeSk7CkBAIC05OSw2
ICsxMTgsNyBAQCB2b2lkIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVJZGxlU291cmNlKGNvbnN0
IGNoYXIqIG5hbWUsIEdTb3VyY2VGdW5jIHNvdXJjZUZ1bgogdm9pZCBHTWFpbkxvb3BTb3VyY2U6
OnNjaGVkdWxlKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24sIGludCBwcmlvcml0eSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBkZXN0cm95RnVuY3Rpb24s
IEdNYWluQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjYW5jZWwoKTsKKyAgICBtX3BlcnNpc3Rl
bnRTb3VyY2UgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuc291cmNlKTsKICAg
ICBtX2NvbnRleHQgPSB7CkBAIC0xMTYsNiArMTM2LDcgQEAgdm9pZCBHTWFpbkxvb3BTb3VyY2U6
OnNjaGVkdWxlKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24KIHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZShjb25zdCBjaGFyKiBuYW1lLCBzdGQ6
OmZ1bmN0aW9uPGJvb2wgKCk+IGZ1bmN0aW9uLCBpbnQgcHJpb3JpdHksIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZGVzdHJveUZ1bmN0aW9uLCBHTWFpbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
Y2FuY2VsKCk7CisgICAgbV9wZXJzaXN0ZW50U291cmNlID0gbnVsbHB0cjsKIAogICAgIEFTU0VS
VCghbV9jb250ZXh0LnNvdXJjZSk7CiAgICAgbV9jb250ZXh0ID0gewpAQCAtMTMzLDYgKzE1NCw3
IEBAIHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZShjb25zdCBjaGFyKiBuYW1lLCBzdGQ6
OmZ1bmN0aW9uPGJvb2wgKCk+IGZ1bmN0aW9uCiB2b2lkIEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1
bGUoY29uc3QgY2hhciogbmFtZSwgc3RkOjpmdW5jdGlvbjxib29sIChHSU9Db25kaXRpb24pPiBm
dW5jdGlvbiwgR1NvY2tldCogc29ja2V0LCBHSU9Db25kaXRpb24gY29uZGl0aW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IGRlc3Ryb3lGdW5jdGlvbiwgR01haW5Db250ZXh0KiBjb250ZXh0KQog
ewogICAgIGNhbmNlbCgpOworICAgIG1fcGVyc2lzdGVudFNvdXJjZSA9IG51bGxwdHI7CiAKICAg
ICBBU1NFUlQoIW1fY29udGV4dC5zb3VyY2UpOwogICAgIEdDYW5jZWxsYWJsZSogc29ja2V0Q2Fu
Y2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldygpOwpAQCAtMTU4LDkgKzE4MCwxMCBAQCB2b2lk
IEdNYWluTG9vcFNvdXJjZTo6c2NoZWR1bGVUaW1lb3V0U291cmNlKGNvbnN0IGNoYXIqIG5hbWUs
IEdTb3VyY2VGdW5jIHNvdXJjZQogICAgIEFTU0VSVChtX3N0YXR1cyA9PSBSZWFkeSk7CiAgICAg
bV9zdGF0dXMgPSBTY2hlZHVsZWQ7CiAKLSAgICBnX3NvdXJjZV9zZXRfbmFtZShtX2NvbnRleHQu
c291cmNlLmdldCgpLCBuYW1lKTsKICAgICBpZiAocHJpb3JpdHkgIT0gR19QUklPUklUWV9ERUZB
VUxUKQogICAgICAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV9jb250ZXh0LnNvdXJjZS5nZXQo
KSwgcHJpb3JpdHkpOworCisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV9jb250ZXh0LnNvdXJjZS5n
ZXQoKSwgbmFtZSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKG1fY29udGV4dC5zb3VyY2Uu
Z2V0KCksIHNvdXJjZUZ1bmN0aW9uLCB0aGlzLCBudWxscHRyKTsKICAgICBnX3NvdXJjZV9hdHRh
Y2gobV9jb250ZXh0LnNvdXJjZS5nZXQoKSwgY29udGV4dCk7CiB9CkBAIC0xNjksOSArMTkyLDI0
IEBAIHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXkoY29uc3QgY2hhciog
bmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpCiB7CiAgICAgY2FuY2VsKCk7CiAKKyAgICBpZiAo
bV9kZWxldGVPbkRlc3Ryb3kgPT0gRG9Ob3REZWxldGVPbkRlc3Ryb3kgJiYgIWRlc3Ryb3lGdW5j
dGlvbikgeworICAgICAgICBHTWFpbkNvbnRleHQqIGVmZmVjdGl2ZUNvbnRleHQgPSBjb250ZXh0
ID8gY29udGV4dCA6IGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKTsKKyAgICAgICAgaWYgKCFtX3Bl
cnNpc3RlbnRTb3VyY2UgfHwgZ19zb3VyY2VfZ2V0X2NvbnRleHQobV9wZXJzaXN0ZW50U291cmNl
LmdldCgpKSAhPSBlZmZlY3RpdmVDb250ZXh0KQorICAgICAgICAgICAgbV9wZXJzaXN0ZW50U291
cmNlID0gYWRvcHRHUmVmKGdfc291cmNlX25ldygmcGVyc2lzdGVudFNvdXJjZUZ1bmN0aW9ucywg
c2l6ZW9mKEdTb3VyY2UpKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gUmV1c2Ug
dGhlIGV4aXN0aW5nIHNvdXJjZSwgdXBkYXRlIHRoZSBwcmlvcml0eSBhbmQgbmFtZSBpZiBuZWVk
ZWQuCisgICAgICAgICAgICBpZiAoZ19zb3VyY2VfZ2V0X3ByaW9yaXR5KG1fcGVyc2lzdGVudFNv
dXJjZS5nZXQoKSkgIT0gcHJpb3JpdHkpCisgICAgICAgICAgICAgICAgZ19zb3VyY2Vfc2V0X3By
aW9yaXR5KG1fcGVyc2lzdGVudFNvdXJjZS5nZXQoKSwgcHJpb3JpdHkpOworICAgICAgICAgICAg
aWYgKGdfc3RyY21wMChnX3NvdXJjZV9nZXRfbmFtZShtX3BlcnNpc3RlbnRTb3VyY2UuZ2V0KCkp
LCBuYW1lKSkKKyAgICAgICAgICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZShtX3BlcnNpc3RlbnRT
b3VyY2UuZ2V0KCksIG5hbWUpOworICAgICAgICB9CisgICAgICAgIGdfc291cmNlX3NldF9yZWFk
eV90aW1lKG1fcGVyc2lzdGVudFNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSAr
IGRlbGF5LmNvdW50KCkgKiAxMDAwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wZXJzaXN0ZW50
U291cmNlID0gbnVsbHB0cjsKKwogICAgIEFTU0VSVCghbV9jb250ZXh0LnNvdXJjZSk7CiAgICAg
bV9jb250ZXh0ID0gewotICAgICAgICBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoZGVs
YXkuY291bnQoKSkpLAorICAgICAgICBtX3BlcnNpc3RlbnRTb3VyY2UgPyBtX3BlcnNpc3RlbnRT
b3VyY2UgOiBhZG9wdEdSZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoZGVsYXkuY291bnQoKSkpLAog
ICAgICAgICBudWxscHRyLCAvLyBjYW5jZWxsYWJsZQogICAgICAgICBudWxscHRyLCAvLyBzb2Nr
ZXRDYW5jZWxsYWJsZQogICAgICAgICBXVEY6Om1vdmUoZnVuY3Rpb24pLApAQCAtMTc5LDEyICsy
MTcsMTUgQEAgdm9pZCBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQWZ0ZXJEZWxheShjb25zdCBj
aGFyKiBuYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCkKICAgICAgICAgbnVsbHB0ciwgLy8gc29j
a2V0Q2FsbGJhY2sKICAgICAgICAgV1RGOjptb3ZlKGRlc3Ryb3lGdW5jdGlvbikKICAgICB9Owot
ICAgIHNjaGVkdWxlVGltZW91dFNvdXJjZShuYW1lLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VG
dW5jPih2b2lkU291cmNlQ2FsbGJhY2spLCBwcmlvcml0eSwgY29udGV4dCk7CisKKyAgICBpZiAo
IWdfc291cmNlX2dldF9jb250ZXh0KG1fY29udGV4dC5zb3VyY2UuZ2V0KCkpKQorICAgICAgICBz
Y2hlZHVsZVRpbWVvdXRTb3VyY2UobmFtZSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
dm9pZFNvdXJjZUNhbGxiYWNrKSwgcHJpb3JpdHksIGNvbnRleHQpOwogfQogCiB2b2lkIEdNYWlu
TG9vcFNvdXJjZTo6c2NoZWR1bGVBZnRlckRlbGF5KGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVu
Y3Rpb248Ym9vbCAoKT4gZnVuY3Rpb24sIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVsYXks
IGludCBwcmlvcml0eSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBkZXN0cm95RnVuY3Rpb24sIEdN
YWluQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjYW5jZWwoKTsKKyAgICBtX3BlcnNpc3RlbnRT
b3VyY2UgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuc291cmNlKTsKICAgICBt
X2NvbnRleHQgPSB7CkBAIC0yMDIsNiArMjQzLDcgQEAgdm9pZCBHTWFpbkxvb3BTb3VyY2U6OnNj
aGVkdWxlQWZ0ZXJEZWxheShjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKCkK
IHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXkoY29uc3QgY2hhciogbmFt
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbiwgc3RkOjpjaHJvbm86OnNlY29uZHMg
ZGVsYXksIGludCBwcmlvcml0eSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBkZXN0cm95RnVuY3Rp
b24sIEdNYWluQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjYW5jZWwoKTsKKyAgICBtX3BlcnNp
c3RlbnRTb3VyY2UgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuc291cmNlKTsK
ICAgICBtX2NvbnRleHQgPSB7CkBAIC0yMTksNiArMjYxLDcgQEAgdm9pZCBHTWFpbkxvb3BTb3Vy
Y2U6OnNjaGVkdWxlQWZ0ZXJEZWxheShjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCkKIHZvaWQgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFmdGVyRGVsYXkoY29uc3QgY2hh
ciogbmFtZSwgc3RkOjpmdW5jdGlvbjxib29sICgpPiBmdW5jdGlvbiwgc3RkOjpjaHJvbm86OnNl
Y29uZHMgZGVsYXksIGludCBwcmlvcml0eSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBkZXN0cm95
RnVuY3Rpb24sIEdNYWluQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjYW5jZWwoKTsKKyAgICBt
X3BlcnNpc3RlbnRTb3VyY2UgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuc291
cmNlKTsKICAgICBtX2NvbnRleHQgPSB7CkBAIC0yOTQsNyArMzM3LDggQEAgdm9pZCBHTWFpbkxv
b3BTb3VyY2U6OnZvaWRDYWxsYmFjaygpCiAgICAgICAgIGZpbmlzaFZvaWRDYWxsYmFjaygpOwog
ICAgIH0KIAotICAgIGNvbnRleHQuZGVzdHJveVNvdXJjZSgpOworICAgIGlmIChtX3BlcnNpc3Rl
bnRTb3VyY2UuZ2V0KCkgIT0gY29udGV4dC5zb3VyY2UuZ2V0KCkpCisgICAgICAgIGNvbnRleHQu
ZGVzdHJveVNvdXJjZSgpOwogICAgIGlmIChtX2RlbGV0ZU9uRGVzdHJveSA9PSBEZWxldGVPbkRl
c3Ryb3kpCiAgICAgICAgIGRlbGV0ZSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR01h
aW5Mb29wU291cmNlLmgKaW5kZXggMzZkZDQ1OS4uNDM3NTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvZ29iamVjdC9HTWFpbkxvb3BTb3VyY2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dNYWluTG9vcFNvdXJjZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgZ2Jvb2xlYW4gc29ja2V0U291cmNlQ2FsbGJhY2soR1NvY2tldCosIEdJT0NvbmRp
dGlvbiwgR01haW5Mb29wU291cmNlKik7CiAKICAgICBEZWxldGVPbkRlc3Ryb3lUeXBlIG1fZGVs
ZXRlT25EZXN0cm95OworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9wZXJzaXN0ZW50U291cmNlOwog
CiBwcm90ZWN0ZWQ6CiAgICAgQ29udGV4dCBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApp
bmRleCA1ZTk0YjA4Li4xYTI0OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTM1OSw3ICsz
NTksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAKICAg
ICAvLyBXZSB1c2UgYSBHTGliIHRpbWVyIGJlY2F1c2Ugb3RoZXJ3aXNlIEdUSysgZXZlbnQgaGFu
ZGxpbmcgZHVyaW5nIGRyYWdnaW5nIGNhbiBzdGFydmUgV2ViQ29yZSB0aW1lcnMsIHdoaWNoIGhh
dmUgYSBsb3dlciBwcmlvcml0eS4KICAgICBpZiAoIW1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2su
aXNTY2hlZHVsZWQoKSkKLSAgICAgICAgbV9sYXllckZsdXNoVGltZXJDYWxsYmFjay5zY2hlZHVs
ZSgiW1dlYktpdF0gbGF5ZXJGbHVzaFRpbWVyIiwgc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3Rr
OjpsYXllckZsdXNoVGltZXJGaXJlZCwgdGhpcyksIEdES19QUklPUklUWV9FVkVOVFMpOworICAg
ICAgICBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktp
dF0gbGF5ZXJGbHVzaFRpbWVyIiwgc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3RrOjpsYXllckZs
dXNoVGltZXJGaXJlZCwgdGhpcyksIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KDApKSwgR0RL
X1BSSU9SSVRZX0VWRU5UUyk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0TGF5ZXJG
bHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJsZWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>