// ===================================================================================================================== // fennec, a free and open source game engine // Copyright © 2025 Medusa Slockbower // // 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 3 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, see . // ===================================================================================================================== #include #include namespace fennec { eglsurface::~eglsurface() { if (_window->is_type()) { wl_egl_window_destroy(static_cast(_handle)); } } void eglsurface::resize(size_t width, size_t height) { gfxsurface::resize(width, height); if (_window->is_type()) { wl_egl_window_resize(static_cast(_handle), width, height, 0, 0); } } eglsurface::eglsurface(eglcontext* context, window* window) : gfxsurface(context, window, this) , _handle(nullptr) , _surface(nullptr) { const window::config& config = window->get_config(); if (window->is_type()) { _handle = wl_egl_window_create(window->get_native_handle(), config.width, config.height); } assert( _handle != nullptr, "Failed to create egl window!" ); eglCreateWindowSurface( context->get_egl_display(), context->get_egl_config(), reinterpret_cast(_handle), nullptr ); assert( EGL_TRUE == eglMakeCurrent(context->get_egl_display(), _surface, _surface, context->get_egl_context()), "Failed to create egl window!" ); } }