The Issue ======= For a long time now MinGW has been unsupported and unmaintained and at this point, it looks like something that we should just leave behind and move on. Why Remove ========== One of the big motivations for MinGW back in the day is that it was free compared to MSVC which was licensed based. However, now that this is no longer true we have basically stopped updating the need CMake files. Along with the CMake files, there are several patches to the extern libs needed to make this work. For example, see: https://developer.blender.org/diffusion/B/browse/master/extern/carve/patches/mingw_w64.patch If we wanted to keep MinGW then we would need to make more custom patches to the external libs and this is not something our platform maintainers are willing to do. For example, here is the patches needed to build python: https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-python3 Fixes T51301 Differential Revision: https://developer.blender.org/D2648
160 lines
3.8 KiB
C++
160 lines
3.8 KiB
C++
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2013 Blender Foundation.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): Jason Wilkins
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
/** \file ghost/intern/GHOST_Context.cpp
|
|
* \ingroup GHOST
|
|
*
|
|
* Definition of GHOST_Context class.
|
|
*/
|
|
|
|
#include "GHOST_Context.h"
|
|
|
|
#ifdef _WIN32
|
|
# include <GL/wglew.h> // only for symbolic constants, do not use API functions
|
|
# include <tchar.h>
|
|
#
|
|
# ifndef ERROR_PROFILE_DOES_NOT_MATCH_DEVICE
|
|
# define ERROR_PROFILE_DOES_NOT_MATCH_DEVICE 0x7E7
|
|
# endif
|
|
#endif
|
|
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
bool win32_chk(bool result, const char *file, int line, const char *text)
|
|
{
|
|
if (!result) {
|
|
LPTSTR formattedMsg = NULL;
|
|
|
|
DWORD error = GetLastError();
|
|
|
|
const char *msg;
|
|
|
|
DWORD count = 0;
|
|
|
|
switch (error) {
|
|
case ERROR_INVALID_VERSION_ARB:
|
|
msg = "The specified OpenGL version and feature set are either invalid or not supported.\n";
|
|
break;
|
|
|
|
case ERROR_INVALID_PROFILE_ARB:
|
|
msg = "The specified OpenGL profile and feature set are either invalid or not supported.\n";
|
|
break;
|
|
|
|
case ERROR_INVALID_PIXEL_TYPE_ARB:
|
|
msg = "The specified pixel type is invalid.\n";
|
|
break;
|
|
|
|
case ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB:
|
|
msg = ("The device contexts specified are not compatible. "
|
|
"This can occur if the device contexts are managed by "
|
|
"different drivers or possibly on different graphics adapters.\n");
|
|
break;
|
|
|
|
#ifdef WITH_GLEW_ES
|
|
case ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV:
|
|
msg = "The device context(s) and rendering context have non-matching affinity masks.\n";
|
|
break;
|
|
|
|
case ERROR_MISSING_AFFINITY_MASK_NV:
|
|
msg = "The rendering context does not have an affinity mask set.\n";
|
|
break;
|
|
#endif
|
|
|
|
case ERROR_PROFILE_DOES_NOT_MATCH_DEVICE:
|
|
msg = ("The specified profile is intended for a device of a "
|
|
"different type than the specified device.\n");
|
|
break;
|
|
|
|
default:
|
|
{
|
|
count =
|
|
FormatMessage(
|
|
(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
|
FORMAT_MESSAGE_IGNORE_INSERTS),
|
|
NULL,
|
|
error,
|
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
|
(LPTSTR)(&formattedMsg),
|
|
0,
|
|
NULL);
|
|
|
|
msg = count > 0 ? formattedMsg : "<no system message>\n";
|
|
break;
|
|
}
|
|
}
|
|
|
|
#ifndef NDEBUG
|
|
_ftprintf(
|
|
stderr,
|
|
"%s(%d):[%s] -> Win32 Error# (%lu): %s",
|
|
file,
|
|
line,
|
|
text,
|
|
(unsigned long)error,
|
|
msg);
|
|
#else
|
|
_ftprintf(
|
|
stderr,
|
|
"Win32 Error# (%lu): %s",
|
|
(unsigned long)error,
|
|
msg);
|
|
#endif
|
|
|
|
SetLastError(NO_ERROR);
|
|
|
|
if (count != 0)
|
|
LocalFree(formattedMsg);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
#endif // _WIN32
|
|
|
|
|
|
void GHOST_Context::initContextGLEW()
|
|
{
|
|
mxDestroyContext(m_mxContext); // no-op if m_mxContext is NULL
|
|
|
|
mxMakeCurrentContext(mxCreateContext());
|
|
|
|
m_mxContext = mxGetCurrentContext();
|
|
}
|
|
|
|
|
|
void GHOST_Context::initClearGL()
|
|
{
|
|
glClearColor(0.447, 0.447, 0.447, 0.000);
|
|
glClear(GL_COLOR_BUFFER_BIT);
|
|
glClearColor(0.000, 0.000, 0.000, 0.000);
|
|
}
|