#ifndef GLXSurface_h
#define GLXSurface_h
#if USE(GLX)
#include "GLTransportSurface.h"
#include "GLXConfigSelector.h"
#include "X11Helper.h"
namespace WebCore {
class GLXTransportSurface : public GLTransportSurface {
public:
GLXTransportSurface(const IntSize&, SurfaceAttributes);
virtual ~GLXTransportSurface();
virtual PlatformSurfaceConfig configuration() override;
virtual void swapBuffers() override;
virtual void setGeometry(const IntRect&) override;
virtual GLPlatformSurface::SurfaceAttributes attributes() const override;
virtual void destroy() override;
private:
std::unique_ptr<GLXConfigSelector> m_configSelector;
};
class GLXOffScreenSurface : public GLPlatformSurface {
public:
GLXOffScreenSurface(SurfaceAttributes);
virtual ~GLXOffScreenSurface();
virtual PlatformSurfaceConfig configuration() override;
virtual void destroy() override;
private:
void initialize(SurfaceAttributes);
void freeResources();
std::unique_ptr<GLXConfigSelector> m_configSelector;
Pixmap m_pixmap;
GLXPixmap m_glxPixmap;
};
class GLXTransportSurfaceClient : public GLTransportSurfaceClient {
public:
GLXTransportSurfaceClient(const PlatformBufferHandle, bool);
virtual ~GLXTransportSurfaceClient();
virtual void prepareTexture() override;
virtual void destroy() override;
private:
Pixmap m_xPixmap;
GLXPixmap m_glxPixmap;
};
}
#endif
#endif