Fix to build with GCC 4.9

This commit is contained in:
yvt 2018-10-27 17:47:31 +09:00
parent ea0088ddd4
commit c50906d16b
2 changed files with 8 additions and 2 deletions

View File

@ -67,6 +67,8 @@ namespace spades {
template <class S> Handle(Handle<S> &&h) : ptr(h.MaybeUnmanage()) {}
template <class S> operator Handle<S>() && { return {std::move(*this)}; }
~Handle() {
if (ptr)
ptr->Release();

View File

@ -409,11 +409,15 @@ namespace spades {
case RendererType::GL: {
auto glDevice = Handle<SDLGLDevice>::New(wnd);
auto dummy = Handle<Disposable>::New(); // FIXME
return {Handle<draw::GLRenderer>::New(glDevice), std::move(dummy)};
return std::make_tuple(
Handle<draw::GLRenderer>::New(glDevice).Cast<client::IRenderer>(),
std::move(dummy));
}
case RendererType::SW: {
auto port = Handle<SDLSWPort>::New(wnd);
return {Handle<draw::SWRenderer>::New(port), std::move(port)};
return std::make_tuple(
Handle<draw::SWRenderer>::New(port).Cast<client::IRenderer>(),
std::move(port).Cast<Disposable>());
}
default: SPRaise("Invalid renderer type");
}