mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
Remove resource handler.
We decide to use shared_ptr instead. And we will treat a resource class as a reference. (instead of object)
This commit is contained in:
parent
386c4633e7
commit
002617a557
|
@ -23,7 +23,7 @@ SDL_Cursor* Cursor::_get()
|
||||||
//private
|
//private
|
||||||
void Cursor::_clear()
|
void Cursor::_clear()
|
||||||
{
|
{
|
||||||
_cur.release();
|
_cur.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
Cursor::Cursor(Surface surf,Point hotspot)
|
Cursor::Cursor(Surface surf,Point hotspot)
|
||||||
|
@ -76,5 +76,5 @@ void Cursor::activate()
|
||||||
SDL_SetCursor(_get());
|
SDL_SetCursor(_get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /// End of namespace MiniEngine
|
} /// End of namespace MiniEngine
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "include.h"
|
#include "include.h"
|
||||||
#include "__Noncopyable.h"
|
#include "__Noncopyable.h"
|
||||||
#include "_handler.h"
|
|
||||||
#include "_SystemCursorType.h"
|
#include "_SystemCursorType.h"
|
||||||
#include "Point.h"
|
#include "Point.h"
|
||||||
#include "Surface.h"
|
#include "Surface.h"
|
||||||
#include "__Plugin.h"
|
#include "__Plugin.h"
|
||||||
|
#include <memory>
|
||||||
namespace MiniEngine
|
namespace MiniEngine
|
||||||
{
|
{
|
||||||
class Cursor : public NonCopyable
|
class Cursor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Cursor()=default;
|
Cursor()=default;
|
||||||
|
@ -25,7 +25,7 @@ public:
|
||||||
|
|
||||||
void release();
|
void release();
|
||||||
private:
|
private:
|
||||||
res_ptr<SDL_Cursor> _cur;
|
std::shared_ptr<SDL_Cursor> _cur;
|
||||||
|
|
||||||
void _set(SDL_Cursor*);
|
void _set(SDL_Cursor*);
|
||||||
void _set_no_delete(SDL_Cursor*);
|
void _set_no_delete(SDL_Cursor*);
|
||||||
|
@ -34,5 +34,5 @@ private:
|
||||||
|
|
||||||
friend class _internal::Plugin;
|
friend class _internal::Plugin;
|
||||||
};
|
};
|
||||||
} /// End of namespace MiniEngine
|
} /// End of namespace MiniEngine
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ void Font::_set(TTF_Font* p)
|
||||||
// private
|
// private
|
||||||
void Font::_clear()
|
void Font::_clear()
|
||||||
{
|
{
|
||||||
_font.release();
|
_font.reset();
|
||||||
}
|
}
|
||||||
// private
|
// private
|
||||||
TTF_Font* Font::_get() const
|
TTF_Font* Font::_get() const
|
||||||
|
|
|
@ -9,10 +9,9 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "__Plugin.h"
|
#include "__Plugin.h"
|
||||||
#include "__Noncopyable.h"
|
#include "__Noncopyable.h"
|
||||||
#include "_handler.h"
|
|
||||||
namespace MiniEngine
|
namespace MiniEngine
|
||||||
{
|
{
|
||||||
class Font : public NonCopyable
|
class Font
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Font() = default;
|
Font() = default;
|
||||||
|
@ -118,7 +117,7 @@ private:
|
||||||
void _real_setFontStyle(int);
|
void _real_setFontStyle(int);
|
||||||
int _style_caster(FontStyle);
|
int _style_caster(FontStyle);
|
||||||
|
|
||||||
res_ptr<TTF_Font> _font;
|
std::shared_ptr<TTF_Font> _font;
|
||||||
|
|
||||||
void _set(TTF_Font*);
|
void _set(TTF_Font*);
|
||||||
void _clear();
|
void _clear();
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
#include "_handler.h"
|
|
|
@ -1,66 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
namespace MiniEngine
|
|
||||||
{
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
class res_ptr
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
res_ptr() : _ptr(nullptr) {}
|
|
||||||
res_ptr(T* ptr,const std::function<void(T*)>& delFunc) : _ptr(ptr), _delfunc(delFunc) {}
|
|
||||||
res_ptr(const res_ptr&)=delete;
|
|
||||||
res_ptr& operator = (const res_ptr&)=delete;
|
|
||||||
res_ptr(res_ptr&& t)
|
|
||||||
{
|
|
||||||
_ptr=t._ptr;
|
|
||||||
_delfunc=t._delfunc;
|
|
||||||
t._ptr=nullptr;
|
|
||||||
}
|
|
||||||
res_ptr& operator = (res_ptr&& t)
|
|
||||||
{
|
|
||||||
release();
|
|
||||||
_ptr=t._ptr;
|
|
||||||
_delfunc=t._delfunc;
|
|
||||||
t._ptr=nullptr;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
~res_ptr()
|
|
||||||
{
|
|
||||||
release();
|
|
||||||
}
|
|
||||||
|
|
||||||
void release()
|
|
||||||
{
|
|
||||||
if(_ptr)
|
|
||||||
{
|
|
||||||
_delfunc(_ptr);
|
|
||||||
_ptr=nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void reset(T* ptr,const std::function<void(T*)>& delFunc)
|
|
||||||
{
|
|
||||||
release();
|
|
||||||
_ptr=ptr;
|
|
||||||
_delfunc=delFunc;
|
|
||||||
}
|
|
||||||
T* get()
|
|
||||||
{
|
|
||||||
return _ptr;
|
|
||||||
}
|
|
||||||
const T* get() const
|
|
||||||
{
|
|
||||||
return _ptr;
|
|
||||||
}
|
|
||||||
T* operator -> ()
|
|
||||||
{
|
|
||||||
return _ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
T* _ptr;
|
|
||||||
std::function<void(T*)> _delfunc;
|
|
||||||
};
|
|
||||||
|
|
||||||
}/// End of namespace MiniEngine
|
|
Loading…
Reference in New Issue
Block a user