// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef GLBENCH_GLX_STUFF_H_
#define GLBENCH_GLX_STUFF_H_

#include <GL/glx.h>

#include "glbench/glinterface.h"

class GLXInterface : public GLInterface {
 public:
  GLXInterface() : context_(NULL),
                   fb_config_(NULL) {}
  virtual ~GLXInterface() {}

  virtual bool Init();
  virtual void Cleanup();
  virtual XVisualInfo* GetXVisual();

  virtual void SwapBuffers();
  virtual bool SwapInterval(int interval);

  virtual void CheckError();

  virtual bool MakeCurrent(const GLContext& context);
  virtual const GLContext CreateContext();
  virtual void DeleteContext(const GLContext& context);
  virtual const GLContext& GetMainContext() {
    return context_;
  }

  const GLXFBConfig fb_config() const {
    return fb_config_;
  }

 private:
  GLXContext context_;
  GLXFBConfig fb_config_;
};

#endif  // GLBENCH_GLX_STUFF_H_
