mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-08 16:59:59 +01:00
Prevent potential memory leak
This commit is contained in:
@@ -9,10 +9,18 @@
|
|||||||
|
|
||||||
ShadingProgram imageShadingProgram("shaders/image.vs", "shaders/image.fs");
|
ShadingProgram imageShadingProgram("shaders/image.vs", "shaders/image.fs");
|
||||||
ShadingProgram imageAlphaProgram ("shaders/image.vs", "shaders/imageblending.fs");
|
ShadingProgram imageAlphaProgram ("shaders/image.vs", "shaders/imageblending.fs");
|
||||||
|
std::vector< ShadingProgram > maskPrograms = {
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/simple.fs"),
|
||||||
|
ShadingProgram("shaders/image.vs", "shaders/mask_draw.fs"),
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/mask_elipse.fs"),
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/mask_round.fs"),
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/mask_box.fs"),
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/mask_horizontal.fs"),
|
||||||
|
ShadingProgram("shaders/simple.vs", "shaders/mask_vertical.fs")
|
||||||
|
};
|
||||||
|
|
||||||
const char* MaskShader::mask_names[3] = { ICON_FA_EXPAND, ICON_FA_EDIT, ICON_FA_SHAPES };
|
const char* MaskShader::mask_names[3] = { ICON_FA_EXPAND, ICON_FA_EDIT, ICON_FA_SHAPES };
|
||||||
const char* MaskShader::mask_shapes[5] = { "Elipse", "Oblong", "Rectangle", "Horizontal", "Vertical" };
|
const char* MaskShader::mask_shapes[5] = { "Elipse", "Oblong", "Rectangle", "Horizontal", "Vertical" };
|
||||||
std::vector< ShadingProgram* > MaskShader::mask_programs;
|
|
||||||
|
|
||||||
ImageShader::ImageShader(): Shader(), stipple(0.f), mask_texture(0)
|
ImageShader::ImageShader(): Shader(), stipple(0.f), mask_texture(0)
|
||||||
{
|
{
|
||||||
@@ -78,20 +86,10 @@ AlphaShader::AlphaShader(): ImageShader()
|
|||||||
|
|
||||||
MaskShader::MaskShader(): Shader(), mode(0)
|
MaskShader::MaskShader(): Shader(), mode(0)
|
||||||
{
|
{
|
||||||
// first initialization
|
|
||||||
if ( mask_programs.empty() ) {
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/simple.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/image.vs", "shaders/mask_draw.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/mask_elipse.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/mask_round.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/mask_box.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/mask_horizontal.fs"));
|
|
||||||
mask_programs.push_back(new ShadingProgram("shaders/simple.vs", "shaders/mask_vertical.fs"));
|
|
||||||
}
|
|
||||||
// reset instance
|
// reset instance
|
||||||
reset();
|
reset();
|
||||||
// static program shader
|
// static program shader
|
||||||
program_ = mask_programs[0];
|
program_ = &maskPrograms[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaskShader::use()
|
void MaskShader::use()
|
||||||
@@ -99,7 +97,7 @@ void MaskShader::use()
|
|||||||
// select program to use
|
// select program to use
|
||||||
mode = MINI(mode, 2);
|
mode = MINI(mode, 2);
|
||||||
shape = MINI(shape, 4);
|
shape = MINI(shape, 4);
|
||||||
program_ = mode < 2 ? mask_programs[mode] : mask_programs[shape+2] ;
|
program_ = mode < 2 ? &maskPrograms[mode] : &maskPrograms[shape+2] ;
|
||||||
|
|
||||||
// actual use of shader program
|
// actual use of shader program
|
||||||
Shader::use();
|
Shader::use();
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ public:
|
|||||||
|
|
||||||
static const char* mask_names[3];
|
static const char* mask_names[3];
|
||||||
static const char* mask_shapes[5];
|
static const char* mask_shapes[5];
|
||||||
static std::vector< ShadingProgram* > mask_programs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // IMAGESHADER_H
|
#endif // IMAGESHADER_H
|
||||||
|
|||||||
Reference in New Issue
Block a user