<?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>96490</bug_id>
          
          <creation_ts>2012-09-12 03:28:21 -0700</creation_ts>
          <short_desc>[Qt4] QOpenGLContext used in GraphicsContext3DQt.cpp (regression r126635)</short_desc>
          <delta_ts>2012-09-14 06:03:20 -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 Qt</component>
          <version>420+</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>
          
          <blocked>88186</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>helder.correia</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718143</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-12 03:28:21 -0700</bug_when>
    <thetext>The patch for bug #78672 introduced the GraphicsContext3D::RenderToCurrentGLContext render-style, but added Qt5 specific code to handle it. It should be too difficult to express that in Qt4.8 terms, but I will leave it to someone who knows what they are doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718154</commentid>
    <comment_count>1</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-12 03:50:21 -0700</bug_when>
    <thetext>The commit has now been merged into the qtwebkit-2.3-staging branch. I have disabled USE(3D_GRAPHICS) until this bug is closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718326</commentid>
    <comment_count>2</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-12 07:19:06 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The patch for bug #78672 introduced the GraphicsContext3D::RenderToCurrentGLContext render-style, but added Qt5 specific code to handle it. It should be too difficult to express that in Qt4.8 terms, but I will leave it to someone who knows what they are doing.

Make that should not be too difficult. The code in question is this:
    if (renderStyle == GraphicsContext3D::RenderToCurrentGLContext) {
        m_platformContext = QOpenGLContext::currentContext();
        m_surface = m_platformContext-&gt;surface();
        return;
    }

I was thinking it could be solved for Qt4 as
        m_platformContext = const_cast&lt;QGLContext*&gt;(QGLContext::currentContext());
        m_surface = dynamic_cast&lt;QGLWidget*&gt;(m_platformContext-&gt;device());

But without knowing the details, I would rather not do const casts and rely on assumptions of what type m_platformContext-&gt;device() is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718345</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-12 07:44:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The patch for bug #78672 introduced the GraphicsContext3D::RenderToCurrentGLContext render-style, but added Qt5 specific code to handle it. It should be too difficult to express that in Qt4.8 terms, but I will leave it to someone who knows what they are doing.
&gt; 
&gt; Make that should not be too difficult. The code in question is this:
&gt;     if (renderStyle == GraphicsContext3D::RenderToCurrentGLContext) {
&gt;         m_platformContext = QOpenGLContext::currentContext();
&gt;         m_surface = m_platformContext-&gt;surface();
&gt;         return;
&gt;     }
&gt; 
&gt; I was thinking it could be solved for Qt4 as
&gt;         m_platformContext = const_cast&lt;QGLContext*&gt;(QGLContext::currentContext());
&gt;         m_surface = dynamic_cast&lt;QGLWidget*&gt;(m_platformContext-&gt;device());
&gt; 
&gt; But without knowing the details, I would rather not do const casts and rely on assumptions of what type m_platformContext-&gt;device() is.

I&apos;d go for that dynamic_cast. You can ASSERT() if you want to be on the safer side, but I think chances are extremely small.

Another option would be to leave it as a QPaintDevice* altogether. For deletion you&apos;re going to get a QObject* m_surfaceOwner from trunk soon (but even then QPaintDevice&apos;s virtual destructor should do the trick). And otherwise I think m_surface is only used for the *IfNeeded() part of makeCurrentIfNeeded().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720612</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-14 05:17:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Another option would be to leave it as a QPaintDevice* altogether. For deletion you&apos;re going to get a QObject* m_surfaceOwner from trunk soon (but even then QPaintDevice&apos;s virtual destructor should do the trick). And otherwise I think m_surface is only used for the *IfNeeded() part of makeCurrentIfNeeded().

I did try to redefine the surface to QPaintDevice, but there was a handfull of places where QGLWidget specific functions were used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720644</commentid>
    <comment_count>5</comment_count>
      <attachid>164121</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-14 05:46:06 -0700</bug_when>
    <thetext>Created attachment 164121
Patch

Patch proposed for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720645</commentid>
    <comment_count>6</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-14 05:47:15 -0700</bug_when>
    <thetext>Should this be applied to Trunk also? We still have a bunch of HAVE(QT5) hooks, and as long as it is small stuff we could try to keep the diff between the branches small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720654</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-14 06:03:20 -0700</bug_when>
    <thetext>Landed in qtwebkit-2.3-staging.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164121</attachid>
            <date>2012-09-14 05:46:06 -0700</date>
            <delta_ts>2012-09-14 05:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>3075</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNDRmYTE2Li5jZDY1N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMDktMTQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0NF0gUU9wZW5HTENvbnRleHQgdXNlZCBpbiBHcmFwaGljc0Nv
bnRleHQzRFF0LmNwcCAocmVncmVzc2lvbiByMTI2NjM1KQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0OTAKKworICAgICAgICBJbXBsZW1lbnRzIFF0
NCBjb2RlLXBhdGggZm9yIHJlbmRlciBzdHlsZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyVG9D
dXJyZW50R0xDb250ZXh0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisKIDIwMTItMDgtMjcgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBSZWdyZXNz
aW9uKHIxMjY3MjEpOiBiaW5kaW5ncy10ZXN0cyByZXN1bHRzIG5lZWQgdG8gYmUgdXBkYXRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA3MDc5ZWI5Li5jZWQwYTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcApAQCAtMTI2LDggKzEyNiwxNSBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgSAog
ICAgIH0KIAogICAgIGlmIChyZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
VG9DdXJyZW50R0xDb250ZXh0KSB7CisjaWYgSEFWRShRVDUpCiAgICAgICAgIG1fcGxhdGZvcm1D
b250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIG1fc3Vy
ZmFjZSA9IG1fcGxhdGZvcm1Db250ZXh0LT5zdXJmYWNlKCk7CisjZWxzZQorICAgICAgICBRR0xD
b250ZXh0KiBwbGF0Zm9ybUNvbnRleHQgPSBjb25zdF9jYXN0PFFHTENvbnRleHQqPihRR0xDb250
ZXh0OjpjdXJyZW50Q29udGV4dCgpKTsKKyAgICAgICAgbV9zdXJmYWNlID0gcGxhdGZvcm1Db250
ZXh0ID8gZHluYW1pY19jYXN0PFFHTFdpZGdldCo+KHBsYXRmb3JtQ29udGV4dC0+ZGV2aWNlKCkp
IDogMDsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgICAgIG1fcGxhdGZvcm1Db250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0OworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjJj
MWQ5Li45NjdiM2QwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMTQgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0NF0gUU9wZW5HTENvbnRl
eHQgdXNlZCBpbiBHcmFwaGljc0NvbnRleHQzRFF0LmNwcCAocmVncmVzc2lvbiByMTI2NjM1KQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0OTAKKwor
ICAgICAgICBSZWVuYWJsZXMgVVNFKDNEX0dSQVBISUNTKSBvbiBRdCA0LgorCisgICAgICAgICog
cW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6CisKIDIwMTItMDgtMjcgIE1pa2hh
aWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAg
UmVuYW1lIFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIEFQSSB0byBOYXZpZ2F0b3JDb250ZW50VXRp
bHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJm
IGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKaW5kZXggZmQ3OWI4
MS4uZmZhNDIxMSAxMDA2NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYK
QEAgLTEyOCw5ICsxMjgsNyBAQCBoYXZlUXQoNCl8aGF2ZVF0TW9kdWxlKHdpZGdldHMpOiBERUZJ
TkVTICs9IEhBVkVfUVNUWUxFPTEKICAgICAjIERpc2FibGUgVVNFKDNEX0dSQVBISUNTKSBvbiBX
aW5kb3dzIHRlbXBvcmFyaWx5LCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwODUwIGZvciBkZXRhaWxzLgogICAgICMgQWxzbyBkaXNhYmxlIG9uIFFOWCwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzI3OAogICAgICF3aW4z
Mi0qOiFxbnggewotIyAzRF9HUkFQSElDUyBpcyBkaXNhYmxlZCBmb3IgUXQ0LjggdW50aWwgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDkwIGlzIHNvbHZlZC4KLSMg
ICAgICAgIGhhdmVRdCg1KXxjb250YWlucyhRVF9DT05GSUcsIG9wZW5nbCk6IERFRklORVMgKz0g
V1RGX1VTRV8zRF9HUkFQSElDUz0xCi0gICAgICAgIGhhdmVRdCg1KTogREVGSU5FUyArPSBXVEZf
VVNFXzNEX0dSQVBISUNTPTEKKyAgICAgICAgaGF2ZVF0KDUpfGNvbnRhaW5zKFFUX0NPTkZJRywg
b3BlbmdsKTogREVGSU5FUyArPSBXVEZfVVNFXzNEX0dSQVBISUNTPTEKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>