<?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>163668</bug_id>
          
          <creation_ts>2016-10-19 10:11:04 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Implement ImageBufferData::getData.</short_desc>
          <delta_ts>2016-10-20 02:09:14 -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>WebCore Misc.</component>
          <version>WebKit Nightly 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241958</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-10-19 10:11:04 -0700</bug_when>
    <thetext>This method is not yet implemented for Direct2D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241960</commentid>
    <comment_count>1</comment_count>
      <attachid>292078</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-10-19 10:14:20 -0700</bug_when>
    <thetext>Created attachment 292078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241961</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 10:15:21 -0700</bug_when>
    <thetext>Attachment 292078 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:78:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Total errors found: 1 in 3 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>1241979</commentid>
    <comment_count>3</comment_count>
      <attachid>292078</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-19 10:38:32 -0700</bug_when>
    <thetext>Comment on attachment 292078
Patch

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

Thanks for getting this to work! I had a few minor comments I&apos;d like you to address when landing.

&gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:50
&gt; +    area *= rect.height();

You should use the &quot;area()&quot; method:  area = 4 * rect.area();

&gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:71
&gt; +    hr = platformContext-&gt;QueryInterface(__uuidof(ID2D1GdiInteropRenderTarget), (void**)&amp;gdiRenderTarget);

I think we should retain this in the GraphicsContextPlatformPrivate, since there will be other times we want to get a GDI HBITMAP or similar out of our D2D context.

You can do this as a separate patch.

&gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:89
&gt; +    memcpy(result-&gt;data(), pixels, 4 * rect.width() * rect.height());

Can we avoid this extra copy by somehow using result-&gt;data() as the pixel source?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242296</commentid>
    <comment_count>4</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-10-20 01:50:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 292078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292078&amp;action=review
&gt; 
&gt; Thanks for getting this to work! I had a few minor comments I&apos;d like you to
&gt; address when landing.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:50
&gt; &gt; +    area *= rect.height();
&gt; 
&gt; You should use the &quot;area()&quot; method:  area = 4 * rect.area();
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:71
&gt; &gt; +    hr = platformContext-&gt;QueryInterface(__uuidof(ID2D1GdiInteropRenderTarget), (void**)&amp;gdiRenderTarget);
&gt; 
&gt; I think we should retain this in the GraphicsContextPlatformPrivate, since
&gt; there will be other times we want to get a GDI HBITMAP or similar out of our
&gt; D2D context.
&gt; 
&gt; You can do this as a separate patch.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageBufferDataDirect2D.cpp:89
&gt; &gt; +    memcpy(result-&gt;data(), pixels, 4 * rect.width() * rect.height());
&gt; 
&gt; Can we avoid this extra copy by somehow using result-&gt;data() as the pixel
&gt; source?

I haven&apos;t found a way to do this yet, since the system is allocating the bitmap pixel data for us.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242301</commentid>
    <comment_count>5</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2016-10-20 02:09:14 -0700</bug_when>
    <thetext>Committed r207591: &lt;http://trac.webkit.org/changeset/207591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292078</attachid>
            <date>2016-10-19 10:14:20 -0700</date>
            <delta_ts>2016-10-19 10:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163668-20161019101043.patch</filename>
            <type>text/plain</type>
            <size>4424</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTE5ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luXVtEaXJlY3QyRF0g
SW1wbGVtZW50IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlciBkYXRhIHRvIGEgYml0bWFwIGluIHN5
c3RlbSBtZW1vcnksIHdoaWNoIGRhdGEgY2FuIGJlIHJlYWQgZnJvbS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisKIDIwMTYtMTAtMTkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgWFBhdGggZnJvbSBFeGNlcHRpb25Db2Rl
IHRvIEV4Y2VwdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCShyZXZp
c2lvbiAyMDc1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNpZiBVU0UoRElSRUNUMkQpCiAKKyNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgpA
QCAtMzksMTAgKzQxLDU0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFNpemUmLCBib29sIC8qIGFjY2VsZXJhdGVSZW5kZXJpbmcgKi8sIGJvb2wgLyogdW5t
dWx0aXBsaWVkICovLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8pIGNvbnN0CitSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIC8qIGFjY2VsZXJhdGVSZW5kZXJpbmcg
Ki8sIGJvb2wgLyogdW5tdWx0aXBsaWVkICovLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8p
IGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworCisg
ICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGFyZWEgPSA0OworICAgIGFyZWEg
Kj0gcmVjdC53aWR0aCgpOworICAgIGFyZWEgKj0gcmVjdC5oZWlnaHQoKTsKKyAgICBpZiAoYXJl
YS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2Fm
ZUdldCgpKTsKKyAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0ID8gcmVzdWx0
LT5kYXRhKCkgOiBudWxscHRyOworICAgIGlmICghcmVzdWx0RGF0YSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBCaXRtYXBJbmZvOjpjcmVh
dGVCb3R0b21VcChzaXplKTsKKworICAgIHZvaWQqIHBpeGVscyA9IG51bGxwdHI7CisgICAgYXV0
byBiaXRtYXAgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZURJQlNlY3Rpb24oMCwgJmJpdG1hcElu
Zm8sIERJQl9SR0JfQ09MT1JTLCAmcGl4ZWxzLCAwLCAwKSk7CisKKyAgICBIV25kREMgd2luZG93
REMobnVsbHB0cik7CisgICAgYXV0byBiaXRtYXBEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRl
Q29tcGF0aWJsZURDKHdpbmRvd0RDKSk7CisgICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVj
dE9iamVjdChiaXRtYXBEQy5nZXQoKSwgYml0bWFwLmdldCgpKTsKKworICAgIEhSRVNVTFQgaHI7
CisKKyAgICBDT01QdHI8SUQyRDFHZGlJbnRlcm9wUmVuZGVyVGFyZ2V0PiBnZGlSZW5kZXJUYXJn
ZXQ7CisgICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVpZG9mKElE
MkQxR2RpSW50ZXJvcFJlbmRlclRhcmdldCksICh2b2lkKiopJmdkaVJlbmRlclRhcmdldCk7Cisg
ICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcGxhdGZv
cm1Db250ZXh0LT5CZWdpbkRyYXcoKTsKKworICAgIEhEQyBoZGMgPSBudWxscHRyOworICAgIGhy
ID0gZ2RpUmVuZGVyVGFyZ2V0LT5HZXREQyhEMkQxX0RDX0lOSVRJQUxJWkVfTU9ERV9DT1BZLCAm
aGRjKTsKKworICAgIEJPT0wgb2sgPSA6OkJpdEJsdChiaXRtYXBEQy5nZXQoKSwgMCwgMCwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBoZGMsIHJlY3QueCgpLCByZWN0LnkoKSwgU1JDQ09Q
WSk7CisKKyAgICBociA9IGdkaVJlbmRlclRhcmdldC0+UmVsZWFzZURDKG51bGxwdHIpOworCisg
ICAgaHIgPSBwbGF0Zm9ybUNvbnRleHQtPkVuZERyYXcoKTsKKworICAgIGlmICghb2spCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLCBwaXhlbHMs
IDQgKiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpKTsKKworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYg
Lyogc291cmNlICovLCBjb25zdCBJbnRTaXplJiAvKiBzb3VyY2VTaXplICovLCBjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRQb2ludCYgLyogZGVzdFBvaW50ICovLCBj
b25zdCBJbnRTaXplJiAvKiBzaXplICovLCBib29sIC8qIGFjY2VsZXJhdGVSZW5kZXJpbmcgKi8s
IGJvb2wgLyogdW5tdWx0aXBsaWVkICovLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyMDc1MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsOSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplCiAgICAgUkVMRUFTRV9BU1NFUlQocmVuZGVyVGFyZ2V0KTsKIAogICAg
IENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dDsKLSAgICBIUkVT
VUxUIGhyID0gcmVuZGVyVGFyZ2V0LT5DcmVhdGVDb21wYXRpYmxlUmVuZGVyVGFyZ2V0KEZsb2F0
U2l6ZShtX2xvZ2ljYWxTaXplKSwgJmJpdG1hcENvbnRleHQpOworICAgIEQyRDFfU0laRV9GIGRl
c2lyZWRTaXplID0gRmxvYXRTaXplKG1fbG9naWNhbFNpemUpOworICAgIEQyRDFfU0laRV9VIHBp
eGVsU2l6ZSA9IEludFNpemUobV9sb2dpY2FsU2l6ZSk7CisgICAgSFJFU1VMVCBociA9IHJlbmRl
clRhcmdldC0+Q3JlYXRlQ29tcGF0aWJsZVJlbmRlclRhcmdldCgmZGVzaXJlZFNpemUsICZwaXhl
bFNpemUsIG51bGxwdHIsIEQyRDFfQ09NUEFUSUJMRV9SRU5ERVJfVEFSR0VUX09QVElPTlNfR0RJ
X0NPTVBBVElCTEUsICZiaXRtYXBDb250ZXh0KTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQgfHwg
IVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="315176"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="315183"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>