void layer::load(const safe_ptr<frame_producer>& frame_producer, bool preview, int auto_play_delta){return impl_->load(frame_producer, preview, auto_play_delta);} \r
void layer::play(){impl_->play();}\r
void layer::pause(){impl_->pause();}\r
+void layer::resume(){impl_->resume();}\r
void layer::stop(){impl_->stop();}\r
bool layer::is_paused() const{return impl_->is_paused_;}\r
int64_t layer::frame_number() const{return impl_->frame_number_;}\r
void load(const safe_ptr<frame_producer>& producer, bool preview, int auto_play_delta); // nothrow\r
void play(); // nothrow\r
void pause(); // nothrow\r
+ void resume(); // nothrow\r
void stop(); // nothrow\r
boost::unique_future<std::wstring> call(bool foreground, const std::wstring& param);\r
\r
}, high_priority);\r
}\r
\r
+ void resume(int index)\r
+ { \r
+ executor_.begin_invoke([=]\r
+ {\r
+ get_layer(index).resume();\r
+ }, high_priority);\r
+ }\r
+\r
void play(int index)\r
{ \r
executor_.begin_invoke([=]\r
void stage::spawn_token(){impl_->spawn_token();}\r
void stage::load(int index, const safe_ptr<frame_producer>& producer, bool preview, int auto_play_delta){impl_->load(index, producer, preview, auto_play_delta);}\r
void stage::pause(int index){impl_->pause(index);}\r
+void stage::resume(int index){impl_->resume(index);}\r
void stage::play(int index){impl_->play(index);}\r
void stage::stop(int index){impl_->stop(index);}\r
void stage::clear(int index){impl_->clear(index);}\r
\r
void load(int index, const safe_ptr<frame_producer>& producer, bool preview = false, int auto_play_delta = -1);\r
void pause(int index);\r
+ void resume(int index);\r
void play(int index);\r
void stop(int index);\r
void clear(int index);\r
return false;\r
}\r
\r
+bool ResumeCommand::DoExecute()\r
+{\r
+ try\r
+ {\r
+ GetChannel()->stage()->resume(GetLayerIndex());\r
+ SetReplyString(TEXT("202 RESUME OK\r\n"));\r
+ return true;\r
+ }\r
+ catch(...)\r
+ {\r
+ SetReplyString(TEXT("501 RESUME FAILED\r\n"));\r
+ }\r
+\r
+ return false;\r
+}\r
+\r
bool PlayCommand::DoExecute()\r
{\r
try\r
bool DoExecute();\r
};\r
\r
+class ResumeCommand: public AMCPCommandBase<true, AddToQueue, 0>\r
+{\r
+ std::wstring print() const { return L"ResumeCommand";}\r
+ bool DoExecute();\r
+};\r
+\r
class StopCommand : public AMCPCommandBase<true, AddToQueue, 0>\r
{\r
std::wstring print() const { return L"StopCommand";}\r
else if(s == TEXT("ADD")) return std::make_shared<AddCommand>();\r
else if(s == TEXT("REMOVE")) return std::make_shared<RemoveCommand>();\r
else if(s == TEXT("PAUSE")) return std::make_shared<PauseCommand>();\r
+ else if(s == TEXT("RESUME")) return std::make_shared<ResumeCommand>();\r
else if(s == TEXT("PLAY")) return std::make_shared<PlayCommand>();\r
else if(s == TEXT("STOP")) return std::make_shared<StopCommand>();\r
else if(s == TEXT("CLEAR")) return std::make_shared<ClearCommand>();\r