prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  [CI-fail] GLScatterPlotItem failing on Windows Builds
  ```
  Traceback (most recent call last):
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\latebind.py", line 41, in __call__
  
      return self._finalCall( *args, **named )
  
  TypeError: 'NoneType' object is not callable
  
  
  
  During handling of the above exception, another exception occurred:
  
  
  
  Traceback (most recent call last):
  
    File "D:\a\1\s\pyqtgraph\opengl\GLViewWidget.py", line 60, in addItem
  
      item.initializeGL()
  
    File "D:\a\1\s\pyqtgraph\opengl\items\GLScatterPlotItem.py", line 70, in initializeGL
  
      self.pointTexture = glGenTextures(1)
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\latebind.py", line 61, in __call__
  
      return self.wrapperFunction( self.baseFunction, *args, **named )
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\GL\exceptional.py", line 178, in glGenTextures
  
      baseFunction( count, textures)
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\latebind.py", line 45, in __call__
  
      return self._finalCall( *args, **named )
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\wrapper.py", line 664, in wrapperCall
  
      raise err
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\wrapper.py", line 657, in wrapperCall
  
      result = wrappedOperation( *cArguments )
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\platform\baseplatform.py", line 402, in __call__
  
      return self( *args, **named )
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\error.py", line 232, in glCheckError
  
      baseOperation = baseOperation,
  
  OpenGL.error.GLError: GLError(
  
  	err = 1282,
  
  	description = b'invalid operation',
  
  	baseOperation = glGenTextures,
  
  	pyArgs = (1, c_ulong(0)),
  
  	cArgs = (1, <cparam 'P' (00000158BE5A9310)>),
  
  	cArguments = (1, <cparam 'P' (00000158BE5A9310)>)
  
  )
  
  
  
  During handling of the above exception, another exception occurred:
  
  
  
  Traceback (most recent call last):
  
    File "<stdin>", line 7, in <module>
  
    File "D:\a\1\s\examples\GLScatterPlotItem.py", line 46, in <module>
  
      w.addItem(sp1)
  
    File "D:\a\1\s\pyqtgraph\opengl\GLViewWidget.py", line 62, in addItem
  
      self.checkOpenGLVersion('Error while adding item %s to GLViewWidget.' % str(item))
  
    File "D:\a\1\s\pyqtgraph\opengl\GLViewWidget.py", line 429, in checkOpenGLVersion
  
      ver = glGetString(GL_VERSION).split()[0]
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\platform\baseplatform.py", line 402, in __call__
  
      return self( *args, **named )
  
    File "c:\hostedtoolcache\windows\python\3.7.3\x64\lib\site-packages\OpenGL\error.py", line 232, in glCheckError
  
      baseOperation = baseOperation,
  
  OpenGL.error.GLError: GLError(
  
  	err = 1282,
  
  	description = b'invalid operation',
  
  	baseOperation = glGetString,
  
  	cArguments = (GL_VERSION,)
  
  )
  
  
  Failed Scatter Plot Example Test Located in GLScatterPlotItem.py 
  ```
  
  Likely related to #928 
  
  </issue>
  <code>
  [start of pyqtgraph/opengl/glInfo.py]
  1 from ..Qt import QtCore, QtGui, QtOpenGL
  2 from OpenGL.GL import *
  3 app = QtGui.QApplication([])
  4 
  5 class GLTest(QtOpenGL.QGLWidget):
  6     def __init__(self):
  7         QtOpenGL.QGLWidget.__init__(self)
  8         self.makeCurrent()
  9         print("GL version:" + glGetString(GL_VERSION))
  10         print("MAX_TEXTURE_SIZE: %d" % glGetIntegerv(GL_MAX_TEXTURE_SIZE))
  11         print("MAX_3D_TEXTURE_SIZE: %d" % glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE))
  12         print("Extensions: " + glGetString(GL_EXTENSIONS))
  13 
  14 GLTest()
  15 
  16 
  17
  [end of pyqtgraph/opengl/glInfo.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/pyqtgraph/opengl/glInfo.py b/pyqtgraph/opengl/glInfo.py
  --- a/pyqtgraph/opengl/glInfo.py
  +++ b/pyqtgraph/opengl/glInfo.py
  @@ -6,10 +6,10 @@
       def __init__(self):
           QtOpenGL.QGLWidget.__init__(self)
           self.makeCurrent()
  -        print("GL version:" + glGetString(GL_VERSION))
  +        print("GL version:" + glGetString(GL_VERSION).decode("utf-8"))
           print("MAX_TEXTURE_SIZE: %d" % glGetIntegerv(GL_MAX_TEXTURE_SIZE))
           print("MAX_3D_TEXTURE_SIZE: %d" % glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE))
  -        print("Extensions: " + glGetString(GL_EXTENSIONS))
  +        print("Extensions: " + glGetString(GL_EXTENSIONS).decode("utf-8").replace(" ", "\n"))
   
   GLTest()
  
verification_info: {"golden_diff": "diff --git a/pyqtgraph/opengl/glInfo.py b/pyqtgraph/opengl/glInfo.py\n--- a/pyqtgraph/opengl/glInfo.py\n+++ b/pyqtgraph/opengl/glInfo.py\n@@ -6,10 +6,10 @@\n     def __init__(self):\n         QtOpenGL.QGLWidget.__init__(self)\n         self.makeCurrent()\n-        print(\"GL version:\" + glGetString(GL_VERSION))\n+        print(\"GL version:\" + glGetString(GL_VERSION).decode(\"utf-8\"))\n         print(\"MAX_TEXTURE_SIZE: %d\" % glGetIntegerv(GL_MAX_TEXTURE_SIZE))\n         print(\"MAX_3D_TEXTURE_SIZE: %d\" % glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE))\n-        print(\"Extensions: \" + glGetString(GL_EXTENSIONS))\n+        print(\"Extensions: \" + glGetString(GL_EXTENSIONS).decode(\"utf-8\").replace(\" \", \"\\n\"))\n \n GLTest()\n", "issue": "[CI-fail] GLScatterPlotItem failing on Windows Builds\n```\r\nTraceback (most recent call last):\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\latebind.py\", line 41, in __call__\r\n\r\n    return self._finalCall( *args, **named )\r\n\r\nTypeError: 'NoneType' object is not callable\r\n\r\n\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\n\r\n\r\nTraceback (most recent call last):\r\n\r\n  File \"D:\\a\\1\\s\\pyqtgraph\\opengl\\GLViewWidget.py\", line 60, in addItem\r\n\r\n    item.initializeGL()\r\n\r\n  File \"D:\\a\\1\\s\\pyqtgraph\\opengl\\items\\GLScatterPlotItem.py\", line 70, in initializeGL\r\n\r\n    self.pointTexture = glGenTextures(1)\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\latebind.py\", line 61, in __call__\r\n\r\n    return self.wrapperFunction( self.baseFunction, *args, **named )\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\GL\\exceptional.py\", line 178, in glGenTextures\r\n\r\n    baseFunction( count, textures)\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\latebind.py\", line 45, in __call__\r\n\r\n    return self._finalCall( *args, **named )\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\wrapper.py\", line 664, in wrapperCall\r\n\r\n    raise err\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\wrapper.py\", line 657, in wrapperCall\r\n\r\n    result = wrappedOperation( *cArguments )\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\platform\\baseplatform.py\", line 402, in __call__\r\n\r\n    return self( *args, **named )\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\error.py\", line 232, in glCheckError\r\n\r\n    baseOperation = baseOperation,\r\n\r\nOpenGL.error.GLError: GLError(\r\n\r\n\terr = 1282,\r\n\r\n\tdescription = b'invalid operation',\r\n\r\n\tbaseOperation = glGenTextures,\r\n\r\n\tpyArgs = (1, c_ulong(0)),\r\n\r\n\tcArgs = (1, <cparam 'P' (00000158BE5A9310)>),\r\n\r\n\tcArguments = (1, <cparam 'P' (00000158BE5A9310)>)\r\n\r\n)\r\n\r\n\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\n\r\n\r\nTraceback (most recent call last):\r\n\r\n  File \"<stdin>\", line 7, in <module>\r\n\r\n  File \"D:\\a\\1\\s\\examples\\GLScatterPlotItem.py\", line 46, in <module>\r\n\r\n    w.addItem(sp1)\r\n\r\n  File \"D:\\a\\1\\s\\pyqtgraph\\opengl\\GLViewWidget.py\", line 62, in addItem\r\n\r\n    self.checkOpenGLVersion('Error while adding item %s to GLViewWidget.' % str(item))\r\n\r\n  File \"D:\\a\\1\\s\\pyqtgraph\\opengl\\GLViewWidget.py\", line 429, in checkOpenGLVersion\r\n\r\n    ver = glGetString(GL_VERSION).split()[0]\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\platform\\baseplatform.py\", line 402, in __call__\r\n\r\n    return self( *args, **named )\r\n\r\n  File \"c:\\hostedtoolcache\\windows\\python\\3.7.3\\x64\\lib\\site-packages\\OpenGL\\error.py\", line 232, in glCheckError\r\n\r\n    baseOperation = baseOperation,\r\n\r\nOpenGL.error.GLError: GLError(\r\n\r\n\terr = 1282,\r\n\r\n\tdescription = b'invalid operation',\r\n\r\n\tbaseOperation = glGetString,\r\n\r\n\tcArguments = (GL_VERSION,)\r\n\r\n)\r\n\r\n\r\nFailed Scatter Plot Example Test Located in GLScatterPlotItem.py \r\n```\r\n\r\nLikely related to #928 \n", "before_files": [{"content": "from ..Qt import QtCore, QtGui, QtOpenGL\nfrom OpenGL.GL import *\napp = QtGui.QApplication([])\n\nclass GLTest(QtOpenGL.QGLWidget):\n    def __init__(self):\n        QtOpenGL.QGLWidget.__init__(self)\n        self.makeCurrent()\n        print(\"GL version:\" + glGetString(GL_VERSION))\n        print(\"MAX_TEXTURE_SIZE: %d\" % glGetIntegerv(GL_MAX_TEXTURE_SIZE))\n        print(\"MAX_3D_TEXTURE_SIZE: %d\" % glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE))\n        print(\"Extensions: \" + glGetString(GL_EXTENSIONS))\n\nGLTest()\n\n\n", "path": "pyqtgraph/opengl/glInfo.py"}]}