Obstacle::~Obstacle() { COLA_ASSERT(!m_router->objectIsInQueuedActionList(this)); if (m_active) { makeInactive(); m_router->processTransaction(); } COLA_ASSERT(m_first_vert != NULL); VertInf *it = m_first_vert; do { VertInf *tmp = it; it = it->shNext; delete tmp; } while (it != m_first_vert); m_first_vert = m_last_vert = NULL; // Free and clear any connection pins. while (!m_connection_pins.empty()) { delete *(m_connection_pins.begin()); } }
~WindowedGLContext() { properties.clear(); // to release any stored programs, etc that may be held in properties. makeInactive(); if (renderContext != 0) { wglDeleteContext (renderContext); renderContext = 0; } ReleaseDC ((HWND) nativeWindow->getNativeHandle(), dc); nativeWindow = nullptr; }
bool setPixelFormat (const OpenGLPixelFormat& pixelFormat) { makeActive(); PIXELFORMATDESCRIPTOR pfd; initialisePixelFormatDescriptor (pfd, pixelFormat); int format = 0; if (wglChoosePixelFormatARB != nullptr) { int atts[64]; int n = 0; atts[n++] = WGL_DRAW_TO_WINDOW_ARB; atts[n++] = GL_TRUE; atts[n++] = WGL_SUPPORT_OPENGL_ARB; atts[n++] = GL_TRUE; atts[n++] = WGL_DOUBLE_BUFFER_ARB; atts[n++] = GL_TRUE; atts[n++] = WGL_PIXEL_TYPE_ARB; atts[n++] = WGL_TYPE_RGBA_ARB; atts[n++] = WGL_COLOR_BITS_ARB; atts[n++] = pfd.cColorBits; atts[n++] = WGL_RED_BITS_ARB; atts[n++] = pixelFormat.redBits; atts[n++] = WGL_GREEN_BITS_ARB; atts[n++] = pixelFormat.greenBits; atts[n++] = WGL_BLUE_BITS_ARB; atts[n++] = pixelFormat.blueBits; atts[n++] = WGL_ALPHA_BITS_ARB; atts[n++] = pixelFormat.alphaBits; atts[n++] = WGL_DEPTH_BITS_ARB; atts[n++] = pixelFormat.depthBufferBits; atts[n++] = WGL_STENCIL_BITS_ARB; atts[n++] = pixelFormat.stencilBufferBits; atts[n++] = WGL_ACCUM_RED_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferRedBits; atts[n++] = WGL_ACCUM_GREEN_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferGreenBits; atts[n++] = WGL_ACCUM_BLUE_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferBlueBits; atts[n++] = WGL_ACCUM_ALPHA_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferAlphaBits; if (pixelFormat.multisamplingLevel > 0 && OpenGLHelpers::isExtensionSupported ("GL_ARB_multisample")) { atts[n++] = WGL_SAMPLE_BUFFERS_ARB; atts[n++] = 1; atts[n++] = WGL_SAMPLES_ARB; atts[n++] = pixelFormat.multisamplingLevel; } atts[n++] = 0; jassert (n <= numElementsInArray (atts)); UINT formatsCount = 0; wglChoosePixelFormatARB (dc, atts, nullptr, 1, &format, &formatsCount); } if (format == 0) format = ChoosePixelFormat (dc, &pfd); if (format != 0) { makeInactive(); // win32 can't change the pixel format of a window, so need to delete the // old one and create a new one.. jassert (nativeWindow != 0); ReleaseDC ((HWND) nativeWindow->getNativeHandle(), dc); nativeWindow = nullptr; createNativeWindow(); if (SetPixelFormat (dc, format, &pfd)) { wglDeleteContext (renderContext); renderContext = wglCreateContext (dc); jassert (renderContext != 0); return renderContext != 0; } } return false; }