| Index: ui/gl/gl_context_glx.cc
 | 
| diff --git a/ui/gl/gl_context_glx.cc b/ui/gl/gl_context_glx.cc
 | 
| index c6752634a19a640c253bf7dd1e81eb720b8753fa..db5f0acbbe1931d434c0cc2224a6dfc25f6a1d83 100644
 | 
| --- a/ui/gl/gl_context_glx.cc
 | 
| +++ b/ui/gl/gl_context_glx.cc
 | 
| @@ -49,85 +49,25 @@ bool GLContextGLX::Initialize(
 | 
|    GLXContext share_handle = static_cast<GLXContext>(
 | 
|        share_group() ? share_group()->GetHandle() : NULL);
 | 
|  
 | 
| +  std::vector<int> attribs;
 | 
|    if (GLSurfaceGLX::IsCreateContextRobustnessSupported()) {
 | 
|      DVLOG(1) << "GLX_ARB_create_context_robustness supported.";
 | 
| -
 | 
| -    std::vector<int> attribs;
 | 
|      attribs.push_back(GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB);
 | 
|      attribs.push_back(GLX_LOSE_CONTEXT_ON_RESET_ARB);
 | 
| -    attribs.push_back(0);
 | 
| -    context_ = glXCreateContextAttribsARB(
 | 
| -        display_,
 | 
| -        static_cast<GLXFBConfig>(compatible_surface->GetConfig()),
 | 
| -        share_handle,
 | 
| -        True,
 | 
| -        &attribs.front());
 | 
| -    if (context_) {
 | 
| -      DVLOG(1) << "  Successfully allocated "
 | 
| -               << (compatible_surface->IsOffscreen() ?
 | 
| -                   "offscreen" : "onscreen")
 | 
| -               << " GL context with LOSE_CONTEXT_ON_RESET_ARB";
 | 
| -    } else {
 | 
| -      // TODO(kbr): it is not expected that things will work properly
 | 
| -      // in this case, since we will likely allocate our offscreen
 | 
| -      // contexts with this bit set and the onscreen contexts without,
 | 
| -      // and won't be able to put them in the same share group.
 | 
| -      // Consider what to do here; force loss of all contexts and
 | 
| -      // reallocation without ARB_robustness?
 | 
| -      LOG(ERROR) <<
 | 
| -          "  FAILED to allocate GL context with LOSE_CONTEXT_ON_RESET_ARB";
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  if (!context_) {
 | 
| -    // The means by which the context is created depends on whether
 | 
| -    // the drawable type works reliably with GLX 1.3. If it does not
 | 
| -    // then fall back to GLX 1.2.
 | 
| -    if (compatible_surface->IsOffscreen()) {
 | 
| -      context_ = glXCreateNewContext(
 | 
| -          display_,
 | 
| -          static_cast<GLXFBConfig>(compatible_surface->GetConfig()),
 | 
| -          GLX_RGBA_TYPE,
 | 
| -          share_handle,
 | 
| -          True);
 | 
| -    } else {
 | 
| -      // Get the visuals for the X drawable.
 | 
| -      XWindowAttributes attributes;
 | 
| -      if (!XGetWindowAttributes(
 | 
| -          display_,
 | 
| -          reinterpret_cast<GLXDrawable>(compatible_surface->GetHandle()),
 | 
| -          &attributes)) {
 | 
| -        LOG(ERROR) << "XGetWindowAttributes failed for window " <<
 | 
| -            reinterpret_cast<GLXDrawable>(
 | 
| -                compatible_surface->GetHandle()) << ".";
 | 
| -        return false;
 | 
| -      }
 | 
| -
 | 
| -      XVisualInfo visual_info_template;
 | 
| -      visual_info_template.visualid = XVisualIDFromVisual(attributes.visual);
 | 
| -
 | 
| -      int visual_info_count = 0;
 | 
| -      scoped_ptr_malloc<XVisualInfo, ScopedPtrXFree> visual_info_list(
 | 
| -          XGetVisualInfo(display_, VisualIDMask,
 | 
| -                         &visual_info_template,
 | 
| -                         &visual_info_count));
 | 
| -
 | 
| -      DCHECK(visual_info_list.get());
 | 
| -      if (visual_info_count == 0) {
 | 
| -        LOG(ERROR) << "No visual info for visual ID.";
 | 
| -        return false;
 | 
| -      }
 | 
| -
 | 
| -      // Attempt to create a context with each visual in turn until one works.
 | 
| -      context_ = glXCreateContext(
 | 
| -          display_,
 | 
| -          visual_info_list.get(),
 | 
| -          share_handle,
 | 
| -          True);
 | 
| -    }
 | 
|    }
 | 
| -
 | 
| -  if (!context_) {
 | 
| +  attribs.push_back(0);
 | 
| +  context_ = glXCreateContextAttribsARB(
 | 
| +      display_,
 | 
| +      static_cast<GLXFBConfig>(compatible_surface->GetConfig()),
 | 
| +      share_handle,
 | 
| +      True,
 | 
| +      &attribs.front());
 | 
| +  if (context_) {
 | 
| +    DVLOG(1) << "  Successfully allocated "
 | 
| +             << (compatible_surface->IsOffscreen() ?
 | 
| +                 "offscreen" : "onscreen")
 | 
| +             << " GL context with LOSE_CONTEXT_ON_RESET_ARB";
 | 
| +  } else {
 | 
|      LOG(ERROR) << "Couldn't create GL context.";
 | 
|      return false;
 | 
|    }
 | 
| @@ -156,9 +96,10 @@ bool GLContextGLX::MakeCurrent(GLSurface* surface) {
 | 
|      return true;
 | 
|  
 | 
|    TRACE_EVENT0("gpu", "GLContextGLX::MakeCurrent");
 | 
| -  if (!glXMakeCurrent(
 | 
| +  if (!glXMakeContextCurrent(
 | 
|        display_,
 | 
|        reinterpret_cast<GLXDrawable>(surface->GetHandle()),
 | 
| +      reinterpret_cast<GLXDrawable>(surface->GetHandle()),
 | 
|        static_cast<GLXContext>(context_))) {
 | 
|      LOG(ERROR) << "Couldn't make context current with X drawable.";
 | 
|      Destroy();
 | 
| @@ -188,7 +129,7 @@ void GLContextGLX::ReleaseCurrent(GLSurface* surface) {
 | 
|      return;
 | 
|  
 | 
|    SetCurrent(NULL, NULL);
 | 
| -  if (!glXMakeCurrent(display_, 0, 0))
 | 
| +  if (!glXMakeContextCurrent(display_, 0, 0, 0))
 | 
|      LOG(ERROR) << "glXMakeCurrent failed in ReleaseCurrent";
 | 
|  }
 | 
|  
 | 
| 
 |