summaryrefslogtreecommitdiff
path: root/Source/Core/Common/GL/GLInterface/BGL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/GL/GLInterface/BGL.cpp')
-rw-r--r--Source/Core/Common/GL/GLInterface/BGL.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/Core/Common/GL/GLInterface/BGL.cpp b/Source/Core/Common/GL/GLInterface/BGL.cpp
new file mode 100644
index 0000000000..7cc9070a49
--- /dev/null
+++ b/Source/Core/Common/GL/GLInterface/BGL.cpp
@@ -0,0 +1,70 @@
+// Copyright 2017 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "Common/GL/GLInterface/BGL.h"
+
+#include <GLView.h>
+#include <Size.h>
+#include <Window.h>
+
+void cInterfaceBGL::Swap()
+{
+ m_gl->SwapBuffers();
+}
+
+bool cInterfaceBGL::Create(void* window_handle, bool core)
+{
+ m_window = static_cast<BWindow*>(window_handle);
+
+ m_gl = new BGLView(m_window->Bounds(), "cInterfaceBGL", B_FOLLOW_ALL_SIDES, 0,
+ BGL_RGB | BGL_DOUBLE | BGL_ALPHA);
+ m_window->AddChild(m_gl);
+
+ s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
+
+ // Control m_window size and picture scaling
+ BRect size = m_gl->Frame();
+ s_backbuffer_width = size.IntegerWidth();
+ s_backbuffer_height = size.IntegerHeight();
+
+ return true;
+}
+
+bool cInterfaceBGL::MakeCurrent()
+{
+ m_gl->LockGL();
+ return true;
+}
+
+bool cInterfaceBGL::ClearCurrent()
+{
+ m_gl->UnlockGL();
+ return true;
+}
+
+void cInterfaceBGL::Shutdown()
+{
+ // We don't need to delete m_gl, it's owned by the BWindow.
+ m_gl = nullptr;
+}
+
+void cInterfaceBGL::Update()
+{
+ BRect size = m_gl->Frame();
+
+ if (s_backbuffer_width == size.IntegerWidth() && s_backbuffer_height == size.IntegerHeight())
+ return;
+
+ s_backbuffer_width = size.IntegerWidth();
+ s_backbuffer_height = size.IntegerHeight();
+}
+
+void cInterfaceBGL::SwapInterval(int interval)
+{
+}
+
+void* cInterfaceBGL::GetFuncAddress(const std::string& name)
+{
+ return m_gl->GetGLProcAddress(name.c_str());
+}