<?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>60258</bug_id>
          
          <creation_ts>2011-05-05 01:49:10 -0700</creation_ts>
          <short_desc>[GTK] Make native events code more consistent</short_desc>
          <delta_ts>2011-05-05 09:02:11 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398622</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-05 01:49:10 -0700</bug_when>
    <thetext>Currently we have:

 - NativeWebKeyboardEvent: Uses GOwnPtr for the native GdkEvent and ::nativeEvent() returns a const GdkEvent.
 - NativeWebMouseEvent: Doesn&apos;t use GOwnPtr, and ::nativeEvent() returns a GdkEvent.
 - NativeWebWheelEvent: Doesn&apos;t use GOwnPtr, and ::nativeEvent() returns a GdkEventScroll.

and for WebEventFactory:

 - createWebKeyboardEvent() receives a const GdkEventKey
 - createWebMouseEvent() receives a GdkEvent
 - createWebWheelEvent() receives a GdkEventScroll

I think the we could unify the way events are created following the current keyboard events code. We should use a GOwnPtr for the native event (it could be destroyed before the class is deleted) and use always const GdkEvent in public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398623</commentid>
    <comment_count>1</comment_count>
      <attachid>92388</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-05 01:53:15 -0700</bug_when>
    <thetext>Created attachment 92388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398725</commentid>
    <comment_count>2</comment_count>
      <attachid>92388</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-05 08:25:16 -0700</bug_when>
    <thetext>Comment on attachment 92388
Patch

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

Very nice cleanup, but I do not understand the addition of the copy constructors.

&gt; Source/WebKit2/Shared/NativeWebMouseEvent.h:52
&gt; +    NativeWebMouseEvent(const NativeWebMouseEvent&amp;);

Why is a copy constructor necessary now?

&gt; Source/WebKit2/Shared/NativeWebWheelEvent.h:52
&gt; +    NativeWebWheelEvent(const NativeWebWheelEvent&amp;);

Ditto.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:99
&gt; +WebMouseEvent WebEventFactory::createWebMouseEvent(const GdkEvent *event, int currentClickCount)

The asterisk should move to the left here.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:141
&gt; +    switch (reinterpret_cast&lt;const GdkEventScroll*&gt;(event)-&gt;direction) {

It&apos;s probably better to write event-&gt;scroll.direction.

&gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:175
&gt; +    guint keyval = reinterpret_cast&lt;const GdkEventKey*&gt;(event)-&gt;keyval;

Ditto. event-&gt;key.keyval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398733</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-05 08:38:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 92388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92388&amp;action=review
&gt; 
&gt; Very nice cleanup, but I do not understand the addition of the copy constructors.
&gt; 
&gt; &gt; Source/WebKit2/Shared/NativeWebMouseEvent.h:52
&gt; &gt; +    NativeWebMouseEvent(const NativeWebMouseEvent&amp;);
&gt; 
&gt; Why is a copy constructor necessary now?

Because the default copy constructor doesn&apos;t know how to copy a GdkEvent.

&gt; &gt; Source/WebKit2/Shared/NativeWebWheelEvent.h:52
&gt; &gt; +    NativeWebWheelEvent(const NativeWebWheelEvent&amp;);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:99
&gt; &gt; +WebMouseEvent WebEventFactory::createWebMouseEvent(const GdkEvent *event, int currentClickCount)
&gt; 
&gt; The asterisk should move to the left here.

Ok.

&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:141
&gt; &gt; +    switch (reinterpret_cast&lt;const GdkEventScroll*&gt;(event)-&gt;direction) {
&gt; 
&gt; It&apos;s probably better to write event-&gt;scroll.direction.

Ok.

&gt; &gt; Source/WebKit2/Shared/gtk/WebEventFactory.cpp:175
&gt; &gt; +    guint keyval = reinterpret_cast&lt;const GdkEventKey*&gt;(event)-&gt;keyval;
&gt; 
&gt; Ditto. event-&gt;key.keyval.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398745</commentid>
    <comment_count>4</comment_count>
      <attachid>92388</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-05 08:49:58 -0700</bug_when>
    <thetext>Comment on attachment 92388
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebMouseEvent.h:52
&gt;&gt;&gt; +    NativeWebMouseEvent(const NativeWebMouseEvent&amp;);
&gt;&gt; 
&gt;&gt; Why is a copy constructor necessary now?
&gt; 
&gt; Because the default copy constructor doesn&apos;t know how to copy a GdkEvent.

Make sense! Might want to put a small note in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398751</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-05 09:02:11 -0700</bug_when>
    <thetext>Committed r85856: &lt;http://trac.webkit.org/changeset/85856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92388</attachid>
            <date>2011-05-05 01:53:15 -0700</date>
            <delta_ts>2011-05-05 08:49:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-native-events.diff</filename>
            <type>text/plain</type>
            <size>12028</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZWUxODExLi4xZWJjNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUg
QEAKIDIwMTEtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IE1ha2UgbmF0aXZlIGV2ZW50cyBjb2RlIG1vcmUgY29uc2lzdGVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyNTgKKworICAgICAgICBNYWtlIGFs
bCBvdGhlciBuYXRpdmUgZXZlbnRzIGNvZGUgZm9sbG93IHRoZSBjdXJyZW50IGtleWJvYXJkCisg
ICAgICAgIGV2ZW50cyBhcHByb2FjaDogdXNlIGEgR093blB0ciBmb3IgdGhlIG5hdGl2ZSBldmVu
dCwgYW5kIHVzZQorICAgICAgICBjb25zdCBHZGtFdmVudCogaW4gdGhlIEFQSS4KKworICAgICAg
ICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2Vi
V2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2Vi
TW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hl
ZWxFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpidXR0b25Gb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50KToKKwor
MjAxMS0wNS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZC4gRml4IFdlYktpdDIgR1RLIGJ1aWxkIGFmdGVyIHI4NTgwOC4K
IAogICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50Lmg6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCAwMWI4NTAyLi44NGFmMWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTM0LDYg
KzM0LDcgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShRVCkKICNpbmNsdWRl
IDxxZ3JhcGhpY3NzY2VuZWV2ZW50Lmg+CiAjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8
R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZW5kaWYK
IApAQCAtNDgsNiArNDksNyBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBleHBs
aWNpdCBOYXRpdmVXZWJNb3VzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCosIGludCk7
CiAjZWxpZiBQTEFURk9STShHVEspCisgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRp
dmVXZWJNb3VzZUV2ZW50Jik7CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGlu
dCk7CiAjZW5kaWYKIApAQCAtNTgsNyArNjAsNyBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShR
VCkKICAgICBjb25zdCBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIEdk
a0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KKyAg
ICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2
ZW50LmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTY5LDcgKzcxLDcgQEAgcHJpdmF0
ZToKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogbV9u
YXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBHZGtFdmVudCogbV9uYXRpdmVF
dmVudDsKKyAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCAzZjY4
MWY0Li41OTMwMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
V2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2
ZW50LmgKQEAgLTM0LDcgKzM0LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9S
TShRVCkKICNpbmNsdWRlIDxxZ3JhcGhpY3NzY2VuZWV2ZW50Lmg+CiAjZWxpZiBQTEFURk9STShH
VEspCi10eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRTY3JvbGwgR2RrRXZlbnRTY3JvbGw7CisjaW5j
bHVkZSA8R093blB0ckd0ay5oPgordHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OCw3ICs0OSw4IEBAIHB1YmxpYzoKICNl
bGlmIFBMQVRGT1JNKFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYldoZWVsRXZlbnQoUUdyYXBo
aWNzU2NlbmVXaGVlbEV2ZW50Kik7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgTmF0aXZlV2Vi
V2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZl
bnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTgsNyArNjAsNyBAQCBwdWJs
aWM6CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBjb25zdCBRR3JhcGhpY3NTY2VuZVdoZWVsRXZl
bnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VsaWYg
UExBVEZPUk0oR1RLKQotICAgIEdka0V2ZW50U2Nyb2xsKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KKyAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQo
KSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTY5LDcgKzcxLDcgQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFH
cmFwaGljc1NjZW5lV2hlZWxFdmVudCogbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEdU
SykKLSAgICBHZGtFdmVudFNjcm9sbCogbV9uYXRpdmVFdmVudDsKKyAgICBHT3duUHRyPEdka0V2
ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAppbmRleCA0ZmY4
NTNjLi4wZGRiMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJk
RXZlbnQoR2RrRXZlbnQqIGV2ZW50KQotICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoJmV2ZW50LT5rZXkpKQorICAgIDogV2ViS2V5
Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQp
KQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CiB9CiAKIE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCi0gICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudCgmZXZlbnQubmF0aXZlRXZlbnQoKS0+a2V5
KSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXli
b2FyZEV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtf
ZXZlbnRfY29weShldmVudC5uYXRpdmVFdmVudCgpKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IGMwYmJi
ZDYuLjI4ZDAwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZl
V2ViTW91c2VFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRp
dmVXZWJNb3VzZUV2ZW50R3RrLmNwcApAQCAtMjcsMTIgKzI3LDE5IEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgogCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisjaW5j
bHVkZSA8Z2RrL2dkay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTmF0aXZlV2ViTW91c2VF
dmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCogZXZlbnQsIGludCBldmVudENsaWNr
Q291bnQpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50KSkKLSAgICAsIG1fbmF0aXZlRXZlbnQoZXZl
bnQpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKK3sKK30KKwor
TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJN
b3VzZUV2ZW50JiBldmVudCkKKyAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNsaWNrQ291bnQo
KSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50
KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2
ZVdlYldoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVX
ZWJXaGVlbEV2ZW50R3RrLmNwcAppbmRleCA4NGZhNWRlLi5iMzY3NjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKQEAg
LTI3LDEyICsyNywxOSBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKIAogI2lu
Y2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgPGdkay9nZGsuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQo
R2RrRXZlbnRTY3JvbGwqIGV2ZW50KQorTmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hl
ZWxFdmVudChHZGtFdmVudCogZXZlbnQpCiAgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChldmVudCkpCi0gICAgLCBtX25hdGl2ZUV2ZW50KGV2
ZW50KQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCit7Cit9CisK
K05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYgZXZlbnQpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViV2hlZWxFdmVudChldmVudC5uYXRpdmVFdmVudCgpKSkKKyAgICAsIG1fbmF0aXZl
RXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQubmF0aXZlRXZlbnQoKSkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBkOGY4YjQ2
Li5iYTZmYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlmaWVycyk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbkZvckV2ZW50KEdka0V2ZW50KiBldmVu
dCkKK3N0YXRpYyBpbmxpbmUgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbkZvckV2ZW50KGNv
bnN0IEdka0V2ZW50KiBldmVudCkKIHsKICAgICB1bnNpZ25lZCBidXR0b24gPSAwOwogCkBAIC05
Niw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbkZv
ckV2ZW50KEdka0V2ZW50KiBldmVudCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VF
dmVudDo6QnV0dG9uPihidXR0b24pOwogfQogCi1XZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViTW91c2VFdmVudChHZGtFdmVudCAqZXZlbnQsIGludCBjdXJyZW50Q2xpY2tD
b3VudCkKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50
KGNvbnN0IEdka0V2ZW50ICpldmVudCwgaW50IGN1cnJlbnRDbGlja0NvdW50KQogewogICAgIGRv
dWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CiAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQs
ICZ4LCAmeSk7CkBAIC0xMzEsMTUgKzEzMSwxNCBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChHZGtFdmVudCAqZXZlbnQsIGludCBjdXJyZW50Qwog
ICAgICAgICAgICAgICAgICAgICAgICAgIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOwogfQog
Ci1XZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChHZGtF
dmVudFNjcm9sbCogc2Nyb2xsRXZlbnQpCitXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCiB7Ci0gICAgR2RrRXZl
bnQqIGV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihzY3JvbGxFdmVudCkpOwogICAg
IGRvdWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CiAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZl
bnQsICZ4LCAmeSk7CiAgICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyhldmVudCwgJnhSb290
LCAmeVJvb3QpOwogCiAgICAgRmxvYXRTaXplIHdoZWVsVGlja3M7Ci0gICAgc3dpdGNoIChzY3Jv
bGxFdmVudC0+ZGlyZWN0aW9uKSB7CisgICAgc3dpdGNoIChyZWludGVycHJldF9jYXN0PGNvbnN0
IEdka0V2ZW50U2Nyb2xsKj4oZXZlbnQpLT5kaXJlY3Rpb24pIHsKICAgICBjYXNlIEdES19TQ1JP
TExfVVA6CiAgICAgICAgIHdoZWVsVGlja3MgPSBGbG9hdFNpemUoMCwgMSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTcxLDIwICsxNzAsMjEgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIHNjcm9sbEV2ZW50KQogICAgICAg
ICAgICAgICAgICAgICAgICAgIGdka19ldmVudF9nZXRfdGltZShldmVudCkpOwogfQogCi1XZWJL
ZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25z
dCBHZGtFdmVudEtleSogZXZlbnQpCitXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCiB7CisgICAgZ3Vp
bnQga2V5dmFsID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHZGtFdmVudEtleSo+KGV2ZW50KS0+
a2V5dmFsOwogICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50KChldmVudC0+dHlwZSA9PSBHREtf
S0VZX1JFTEVBU0UpID8gV2ViRXZlbnQ6OktleVVwIDogV2ViRXZlbnQ6OktleURvd24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleXZh
bCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojpr
ZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZShldmVudC0+a2V5dmFsKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yR2Rr
S2V5Q29kZShldmVudC0+a2V5dmFsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KGV2ZW50LT5rZXl2YWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGtleXZhbCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoa2V5dmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKGtleXZhbCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5kb3dz
S2V5Q29kZUZvckdka0tleUNvZGUoa2V5dmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KGtleXZhbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCAvKiBtYWNDaGFyQ29kZSAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAv
KiBpc0F1dG9SZXBlYXQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNHZGtLZXlD
b2RlRnJvbUtleVBhZChldmVudC0+a2V5dmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc0dka0tleUNvZGVGcm9tS2V5UGFkKGtleXZhbCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UgLyogaXNTeXN0ZW1LZXkgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzRm9yRXZlbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHZGtFdmVudCo+KGV2
ZW50KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR2RrRXZlbnQqPihldmVudCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgK
aW5kZXggZjEzODkwYi4uMDk3YmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkV2ZW50RmFjdG9yeS5oCkBAIC0zMCwxNiArMzAsMTQgQEAKICNpbmNsdWRlICJXZWJFdmVudC5o
IgogCiB0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKLXR5cGVkZWYgc3RydWN0IF9H
ZGtFdmVudFNjcm9sbCBHZGtFdmVudFNjcm9sbDsKLXR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEtl
eSBHZGtFdmVudEtleTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkV2ZW50RmFj
dG9yeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VF
dmVudChHZGtFdmVudCosIGludCk7Ci0gICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2Vi
V2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwotICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50
IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnRLZXkqKTsKKyAgICBzdGF0aWMg
V2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50KTsK
KyAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2
ZW50Kik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dChjb25zdCBHZGtFdmVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKaW5kZXggY2FkN2M5NC4uMmE0MWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjY1LDcgKzI2NSw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZVNjcm9sbEV2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCoKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogCi0gICAgcHJpdi0+cGFnZVBy
b3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQpKTsKKyAgICBw
cml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChyZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKSk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9
Cg==
</data>
<flag name="review"
          id="85354"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>