<?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>49377</bug_id>
          
          <creation_ts>2010-11-11 04:56:24 -0800</creation_ts>
          <short_desc>[Qt][WK2] Implement BackingStore</short_desc>
          <delta_ts>2010-11-11 09:22:40 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>307844</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 04:56:24 -0800</bug_when>
    <thetext>Fill stubbed BackingStore with implmentation!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307847</commentid>
    <comment_count>1</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 05:10:25 -0800</bug_when>
    <thetext>I have a weird problem with implementing this method:
PassOwnPtr&lt;GraphicsContext&gt; BackingStore::createGraphicsContext()
I need to create a QImage and a QPainter on heap to create the GraphicsContext.
Our GC implementation does not own the painter so this would cause a leak.
I took a look at the CoreGraphics and Cairo implementation of GC and those
owns the platform specific data. Unfortunately we cannot tweak the GC to
behave like those because:
1. in some cases we get the painter from the user so we are not allowed to
   own that
2. there is no way to create a copy from an active painter
   (active = begin has been called)

So what I did in the change that will be uploaded is adding a way to explicitly
take off ownership of the painter and the paint device to the GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307857</commentid>
    <comment_count>2</comment_count>
      <attachid>73601</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 05:31:22 -0800</bug_when>
    <thetext>Created attachment 73601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307906</commentid>
    <comment_count>3</comment_count>
      <attachid>73601</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-11 07:35:38 -0800</bug_when>
    <thetext>Comment on attachment 73601
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307913</commentid>
    <comment_count>4</comment_count>
      <attachid>73601</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 07:47:52 -0800</bug_when>
    <thetext>Comment on attachment 73601
Patch

Clearing flags on attachment: 73601

Committed r71821: &lt;http://trac.webkit.org/changeset/71821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307914</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 07:48:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307942</commentid>
    <comment_count>6</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-11 08:30:10 -0800</bug_when>
    <thetext>Noam, could you take a post review on the patch? Maybe it should be tweaked for
performance (maybe the QImage format).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307953</commentid>
    <comment_count>7</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-11-11 08:59:35 -0800</bug_when>
    <thetext>Post review looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307959</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-11 09:22:40 -0800</bug_when>
    <thetext>One thing we might want to look at later is letting QImage align its scanlines on 32-bit boundaries (the default behavior) instead of using the cramped W*H*4 format.

It basically just means overriding UpdateChunk::size() and removing the stride (width * 4) arguments to QImage constructors.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73601</attachid>
            <date>2010-11-11 05:31:22 -0800</date>
            <delta_ts>2010-11-11 07:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49377-20101111143120.patch</filename>
            <type>text/plain</type>
            <size>5916</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTMxYjAxZjFjMmRiZTE0YTkzMjJjZTNmNzZlNzJmMGE4NzIyMzBiZi4uZDE1MjRmNDhlZThmMTIx
NzczZDdlY2QzZDM4ZDIzMmRhZDRhZDkyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0xMSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVudCBCYWNraW5nU3Rv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzc3
CisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5IHNvIG5vIHRlc3RzLgorCisgICAg
ICAgIEFkZCBhIHdheSB0byBoYW5kIG9mZiBvd25lcnNoaXAgb2YgdGhlIFFQYWludGVyIGFuZCB0
aGUgdW5kZXJseWluZworICAgICAgICBRUGFpbnREZXZpY2UgdG8gdGhlIEdyYXBoaWNzQ29udGV4
dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnRha2VPd25lcnNoaXBP
ZlBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0YWtl
T3duZXJzaGlwT2ZQbGF0Zm9ybUNvbnRleHQpOgorCiAyMDEwLTExLTEwICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsg
U2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IDU5MmJmNmZiMGNkNzA4Mzk3NmQ4MDUwNTJkOTM5ZDExMWNhNjk2ZWEuLjcxYTRjNDhkZjMw
ZjY5ZTY3YTJlMjNlMGU5NjljMThkNmM0YmYwOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzk1LDYgKzM5NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBpblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3Q7CiAgICAgICAg
IFBsYXRmb3JtUGF0aCogY3VycmVudFBhdGgoKTsKICAgICAgICAgdm9pZCBwdXNoVHJhbnNwYXJl
bmN5TGF5ZXJJbnRlcm5hbChjb25zdCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUVBpeG1h
cCYgYWxwaGFNYXNrKTsKKyAgICAgICAgdm9pZCB0YWtlT3duZXJzaGlwT2ZQbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICAgICAgc3RhdGljIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGUgdG9RdENvbXBv
c2l0aW9uTW9kZShDb21wb3NpdGVPcGVyYXRvciBvcCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCA0ZjY4
NTc3Yjc0ZmM1NmEwYzU2OWFiMWZlMTUxNDk1ODA2ZjVhYWNjLi4wNmUxZTFjMzQ5MzE1YWMzZjYx
NmM0N2ZhMjRiNDRjOWEyY2E1ZTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMjIwLDggKzIyMCwxMSBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29udGV4
dCgpIHsgcGxhdGZvcm1Db250ZXh0SXNPd25lZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBR
UGFpbnRlciogcGFpbnRlcjsKKyAgICBib29sIHBsYXRmb3JtQ29udGV4dElzT3duZWQ7CiB9Owog
CiAKQEAgLTIzMSw2ICsyMzQsNyBAQCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFpbnRlciogcCwgY29ucwogICAgICwgc29s
aWRDb2xvcihpbml0aWFsU29saWRDb2xvcikKICAgICAsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgLCBwYWludGVyKHApCisgICAgLCBwbGF0Zm9y
bUNvbnRleHRJc093bmVkKGZhbHNlKQogewogICAgIGlmICghcGFpbnRlcikKICAgICAgICAgcmV0
dXJuOwpAQCAtMjQzLDYgKzI0NywxMyBAQCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFpbnRlciogcCwgY29ucwogCiBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUoKQogeworICAgIGlmICghcGxhdGZvcm1Db250ZXh0SXNPd25lZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRlci0+ZW5kKCk7CisgICAgUVBhaW50RGV2aWNlKiBkZXZpY2UgPSBwYWlu
dGVyLT5kZXZpY2UoKTsKKyAgICBkZWxldGUgcGFpbnRlcjsKKyAgICBkZWxldGUgZGV2aWNlOwog
fQogCiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCogcGFpbnRlcikKQEAgLTE0MDAsNiArMTQxMSwxMSBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdAogICAg
IHJldHVybiBtX2RhdGEtPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0Ojp0YWtlT3duZXJzaGlwT2ZQbGF0Zm9ybUNvbnRleHQoKQoreworICAgIG1f
ZGF0YS0+dGFrZU93bmVyc2hpcE9mUGxhdGZvcm1Db250ZXh0KCk7Cit9CisKIH0KIAogLy8gdmlt
OiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMGI3NjQyYTk2NDNjYjFjYWMxY2E5ZGVmNjQ5OTY1ZTM4MTVhOTUyNi4u
YTA0YmRhOGQ0MzQyYThkN2NkOGQwNTcyMDc2ZmQ0ZTgxZDEyZTYwYyAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMC0xMS0xMSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxl
bWVudCBCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzc3CisKKyAgICAgICAgKiBTaGFyZWQvcXQvQmFja2luZ1N0b3JlUXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVRSW1hZ2UpOiBBZGRlZCBzdGF0aWMgaGVscGVyLiBD
cmVhdGVzIGEgUUltYWdlCisgICAgICAgIGZyb20gdGhlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlRmxpcHBlZEdyYXBoaWNzQ29udGV4
dCk6IExlYXZlCisgICAgICAgIHVuaW1wbGVtZW50ZWQgd2l0aCBhbiBBU1NFUlRfTk9UX1JFQUNI
RUQgc2luY2UgdGhpcyBpcyBvbmx5CisgICAgICAgIG5lZWRlZCBmb3IgdGhlIENvcmVHcmFwaGlj
cyBiYWNrZW5kLgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBhaW50KToKKwogMjAx
MC0xMS0xMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvcXQvQmFja2lu
Z1N0b3JlUXQuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvcXQvQmFja2luZ1N0b3JlUXQuY3BwCmluZGV4
IDEwNWM1ZTU1ZTc3NDFmYmQ1ZjEzYmU3MDI4NjQxYTA2NDBhMWQ0MWQuLmFmZWM0ZjIwZGJiNTMx
NWU0N2NlNGUyOTEwYTE0NTMzOGU4Y2FjN2IgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL3F0
L0JhY2tpbmdTdG9yZVF0LmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9xdC9CYWNraW5nU3RvcmVR
dC5jcHAKQEAgLTI1LDI4ICsyNSw0MSBAQAogCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAK
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRl
IDxRUGFpbnRlcj4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBpbmxp
bmUgUUltYWdlIGNyZWF0ZVFJbWFnZSh2b2lkKiBkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgcmV0dXJuIFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHdp
ZHRoLCBoZWlnaHQsIHdpZHRoICogNCwgUUltYWdlOjpGb3JtYXRfUkdCMzIpOworfQorCiBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgUUltYWdl
KiBpbWFnZSA9IG5ldyBRSW1hZ2UoY3JlYXRlUUltYWdlKGRhdGEoKSwgbV9zaXplLndpZHRoKCks
IG1fc2l6ZS5oZWlnaHQoKSkpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IG5ldyBH
cmFwaGljc0NvbnRleHQobmV3IFFQYWludGVyKGltYWdlKSk7CisgICAgY29udGV4dC0+dGFrZU93
bmVyc2hpcE9mUGxhdGZvcm1Db250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBCYWNraW5nU3RvcmU6OmNyZWF0ZUZsaXBwZWRHcmFw
aGljc0NvbnRleHQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gVGhpcyBpcyBD
RyBzcGVjaWZpYyBzbyB3ZSBzaG91bGQgbm90IHVzZSBpdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYpCit2b2lkIEJhY2tp
bmdTdG9yZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBRSW1hZ2UgaW1hZ2UgPSBjcmVhdGVRSW1hZ2UoZGF0YSgpLCBtX3NpemUud2lkdGgo
KSwgbV9zaXplLmhlaWdodCgpKTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7CisgICAgcGFpbnRlci0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNy
Y1JlY3QueSgpKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2UoZHN0UG9pbnQsIGltYWdlLCBRUmVj
dChzcmNSZWN0KSk7CisgICAgcGFpbnRlci0+dHJhbnNsYXRlKHNyY1JlY3QueCgpLCBzcmNSZWN0
LnkoKSk7CiB9Ci0gICAgICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>