mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 14:43:34 +00:00
adding check to texture pointers
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */
|
/* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */
|
||||||
/* Updated: 2024/01/19 05:34:23 by maldavid ### ########.fr */
|
/* Updated: 2024/01/26 11:59:34 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/04 22:10:52 by maldavid #+# #+# */
|
/* Created: 2022/10/04 22:10:52 by maldavid #+# #+# */
|
||||||
/* Updated: 2024/01/20 08:21:37 by maldavid ### ########.fr */
|
/* Updated: 2024/01/26 11:56:34 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -86,12 +86,20 @@ namespace mlx::core
|
|||||||
vkDeviceWaitIdle(Render_Core::get().getDevice().get()); // TODO : synchronize with another method than waiting for GPU to be idle
|
vkDeviceWaitIdle(Render_Core::get().getDevice().get()); // TODO : synchronize with another method than waiting for GPU to be idle
|
||||||
if(ptr == nullptr)
|
if(ptr == nullptr)
|
||||||
{
|
{
|
||||||
core::error::report(e_kind::error, "wrong texture (NULL)");
|
core::error::report(e_kind::error, "invalid image ptr (NULL)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(std::find_if(_textures.begin(), _textures.end(), [=](const Texture& texture)
|
||||||
|
{
|
||||||
|
return &texture == ptr;
|
||||||
|
}) == _textures.end())
|
||||||
|
{
|
||||||
|
core::error::report(e_kind::error, "invalid image ptr");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Texture* texture = static_cast<Texture*>(ptr);
|
Texture* texture = static_cast<Texture*>(ptr);
|
||||||
if(!texture->isInit())
|
if(!texture->isInit())
|
||||||
core::error::report(e_kind::error, "trying to destroy a texture");
|
core::error::report(e_kind::error, "trying to destroy a texture that has already been destroyed");
|
||||||
else
|
else
|
||||||
texture->destroy();
|
texture->destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/04 21:49:46 by maldavid #+# #+# */
|
/* Created: 2022/10/04 21:49:46 by maldavid #+# #+# */
|
||||||
/* Updated: 2024/01/18 14:59:47 by maldavid ### ########.fr */
|
/* Updated: 2024/01/26 11:26:54 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -15,9 +15,7 @@
|
|||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <utility>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
#include <core/errors.h>
|
#include <core/errors.h>
|
||||||
|
|||||||
@@ -22,7 +22,22 @@
|
|||||||
{ \
|
{ \
|
||||||
core::error::report(e_kind::error, "invalid window ptr"); \
|
core::error::report(e_kind::error, "invalid window ptr"); \
|
||||||
return; \
|
return; \
|
||||||
} else {}\
|
} else {}
|
||||||
|
|
||||||
|
#define CHECK_IMAGE_PTR(img, retval) \
|
||||||
|
if(img == nullptr) \
|
||||||
|
{ \
|
||||||
|
core::error::report(e_kind::error, "invalid image ptr (NULL)"); \
|
||||||
|
retval; \
|
||||||
|
} \
|
||||||
|
else if(std::find_if(_textures.begin(), _textures.end(), [=](const Texture& texture) \
|
||||||
|
{ \
|
||||||
|
return &texture == img; \
|
||||||
|
}) == _textures.end()) \
|
||||||
|
{ \
|
||||||
|
core::error::report(e_kind::error, "invalid image ptr"); \
|
||||||
|
retval; \
|
||||||
|
} else {}
|
||||||
|
|
||||||
namespace mlx::core
|
namespace mlx::core
|
||||||
{
|
{
|
||||||
@@ -140,11 +155,7 @@ namespace mlx::core
|
|||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
CHECK_WINDOW_PTR(win);
|
CHECK_WINDOW_PTR(win);
|
||||||
if(img == nullptr)
|
CHECK_IMAGE_PTR(img, return);
|
||||||
{
|
|
||||||
core::error::report(e_kind::error, "wrong texture (NULL)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Texture* texture = static_cast<Texture*>(img);
|
Texture* texture = static_cast<Texture*>(img);
|
||||||
if(!texture->isInit())
|
if(!texture->isInit())
|
||||||
core::error::report(e_kind::error, "trying to put a texture that has been destroyed");
|
core::error::report(e_kind::error, "trying to put a texture that has been destroyed");
|
||||||
@@ -155,11 +166,7 @@ namespace mlx::core
|
|||||||
int Application::getTexturePixel(void* img, int x, int y)
|
int Application::getTexturePixel(void* img, int x, int y)
|
||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
if(img == nullptr)
|
CHECK_IMAGE_PTR(img, return 0);
|
||||||
{
|
|
||||||
core::error::report(e_kind::error, "wrong texture (NULL)");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Texture* texture = static_cast<Texture*>(img);
|
Texture* texture = static_cast<Texture*>(img);
|
||||||
if(!texture->isInit())
|
if(!texture->isInit())
|
||||||
{
|
{
|
||||||
@@ -172,11 +179,7 @@ namespace mlx::core
|
|||||||
void Application::setTexturePixel(void* img, int x, int y, uint32_t color)
|
void Application::setTexturePixel(void* img, int x, int y, uint32_t color)
|
||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
if(img == nullptr)
|
CHECK_IMAGE_PTR(img, return);
|
||||||
{
|
|
||||||
core::error::report(e_kind::error, "wrong texture (NULL)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Texture* texture = static_cast<Texture*>(img);
|
Texture* texture = static_cast<Texture*>(img);
|
||||||
if(!texture->isInit())
|
if(!texture->isInit())
|
||||||
core::error::report(e_kind::error, "trying to set a pixel on texture that has been destroyed");
|
core::error::report(e_kind::error, "trying to set a pixel on texture that has been destroyed");
|
||||||
|
|||||||
Reference in New Issue
Block a user