]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches... 2.0.0.2
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 10 Nov 2011 16:36:02 +0000 (16:36 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 10 Nov 2011 16:36:02 +0000 (16:36 +0000)
18 files changed:
common/diagnostics/graph.cpp
common/diagnostics/graph.h
core/video_channel.cpp
modules/bluefish/consumer/bluefish_consumer.cpp
modules/decklink/consumer/decklink_consumer.cpp
modules/decklink/interop/DeckLinkAPI_h.h
modules/decklink/interop/DeckLinkAPI_i.c
modules/decklink/producer/decklink_producer.cpp
modules/ffmpeg/producer/ffmpeg_producer.cpp
modules/flash/producer/flash_producer.cpp
modules/oal/consumer/oal_consumer.cpp
modules/ogl/consumer/ogl_consumer.cpp
protocol/amcp/AMCPCommandsImpl.cpp
protocol/amcp/AMCPCommandsImpl.h
protocol/amcp/AMCPProtocolStrategy.cpp
shell/casparcg.config
shell/shell.vcxproj
version.tmpl

index db6eff7904baeb56045888a90ab7004dcb4cbde9..0b4348e0bba706d3d4e389dccbf8b6eb721357cc 100644 (file)
@@ -48,7 +48,7 @@ struct drawable : public sf::Drawable
 \r
 class context : public drawable\r
 {      \r
-       sf::RenderWindow window_;\r
+       std::unique_ptr<sf::RenderWindow> window_;\r
        \r
        std::list<std::shared_ptr<drawable>> drawables_;\r
                \r
@@ -71,31 +71,51 @@ public:
                        get_instance().do_register_drawable(drawable);\r
                });\r
        }\r
-                       \r
+\r
+       static void show(bool value)\r
+       {\r
+               begin_invoke([=]\r
+               {       \r
+                       get_instance().do_show(value);\r
+               });\r
+       }\r
+                               \r
 private:\r
        context() : executor_(L"diagnostics")\r
        {\r
-               executor_.begin_invoke([this]\r
-               {                       \r
-                       SetThreadPriority(GetCurrentThread(), BELOW_NORMAL_PRIORITY_CLASS);\r
-                       window_.Create(sf::VideoMode(600, 1000), "CasparCG Diagnostics");\r
-                       window_.SetPosition(0, 0);\r
-                       window_.SetActive();\r
-                       glEnable(GL_BLEND);\r
-                       glEnable(GL_LINE_SMOOTH);\r
-                       glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);\r
-                       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);\r
-                       tick();\r
-               });\r
+       }\r
+\r
+       void do_show(bool value)\r
+       {\r
+               if(value)\r
+               {\r
+                       if(!window_)\r
+                       {\r
+                               SetThreadPriority(GetCurrentThread(), BELOW_NORMAL_PRIORITY_CLASS);\r
+                               window_.reset(new sf::RenderWindow(sf::VideoMode(600, 1000), "CasparCG Diagnostics"));\r
+                               window_->SetPosition(0, 0);\r
+                               window_->SetActive();\r
+                               glEnable(GL_BLEND);\r
+                               glEnable(GL_LINE_SMOOTH);\r
+                               glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);\r
+                               glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);\r
+                               tick();\r
+                       }\r
+               }\r
+               else\r
+                       window_.reset();\r
        }\r
 \r
        void tick()\r
        {\r
+               if(!window_)\r
+                       return;\r
+\r
                sf::Event e;\r
-               while(window_.GetEvent(e)){}            \r
+               while(window_->GetEvent(e)){}           \r
                glClear(GL_COLOR_BUFFER_BIT);\r
-               window_.Draw(*this);\r
-               window_.Display();\r
+               window_->Draw(*this);\r
+               window_->Display();\r
                boost::this_thread::sleep(boost::posix_time::milliseconds(20));\r
                executor_.begin_invoke([this]{tick();});\r
        }\r
@@ -112,8 +132,8 @@ private:
                        auto& drawable = *it;\r
                        if(!drawable.unique())\r
                        {\r
-                               drawable->SetScale(static_cast<float>(window_.GetWidth()), static_cast<float>(target_dy*window_.GetHeight()));\r
-                               float target_y = std::max(last_y, static_cast<float>(n * window_.GetHeight())*target_dy);\r
+                               drawable->SetScale(static_cast<float>(window_->GetWidth()), static_cast<float>(target_dy*window_->GetHeight()));\r
+                               float target_y = std::max(last_y, static_cast<float>(n * window_->GetHeight())*target_dy);\r
                                drawable->SetPosition(0.0f, target_y);                  \r
                                target.Draw(*drawable);                         \r
                                ++it;           \r
@@ -125,7 +145,8 @@ private:
        \r
        void do_register_drawable(const std::shared_ptr<drawable>& drawable)\r
        {\r
-               drawables_.push_back(drawable);\r
+               if(std::find(drawables_.begin(), drawables_.end(), drawable) == drawables_.end())\r
+                       drawables_.push_back(drawable);\r
        }\r
        \r
        static context& get_instance()\r
@@ -168,12 +189,13 @@ class line : public drawable
        boost::optional<diagnostics::guide> guide_;\r
        boost::circular_buffer<std::pair<double, bool>> line_data_;\r
 \r
-       std::vector<double>             tick_data_;\r
-       bool                                    tick_tag_;\r
+       boost::circular_buffer<double>  tick_data_;\r
+       bool                                                    tick_tag_;\r
        color c_;\r
 public:\r
        line(size_t res = 600)\r
                : line_data_(res)\r
+               , tick_data_(50)\r
                , tick_tag_(false)\r
                , c_(1.0f, 1.0f, 1.0f)\r
        {\r
@@ -260,22 +282,19 @@ struct graph::implementation : public drawable
        std::map<std::string, diagnostics::line> lines_;\r
        std::string name_;\r
        std::string text_;\r
-\r
-       int counter_;\r
-\r
+       \r
        implementation(const std::string& name) \r
                : name_(name)\r
-               , text_(name)\r
-               , counter_(0){}\r
+               , text_(name_){}\r
        \r
-       void update(const std::string& name, double value)\r
+       void set_text(const std::string& value)\r
        {\r
-               lines_[name].update(value);\r
+               text_ = value;\r
        }\r
 \r
-       void update_text(const std::string& value)\r
+       void update(const std::string& name, double value)\r
        {\r
-               text_ = value;\r
+               lines_[name].update(value);\r
        }\r
 \r
        void set(const std::string& name, double value)\r
@@ -351,84 +370,74 @@ private:
        implementation& operator=(implementation&);\r
 };\r
        \r
-graph::graph(const std::string& name) : impl_(env::properties().get("configuration.diagnostics.graphs", true) ? new implementation(name) : nullptr)\r
+graph::graph() : impl_(new implementation(""))\r
 {\r
-       if(impl_)\r
-               context::register_drawable(impl_);\r
+\r
 }\r
 \r
-void graph::update_value(const std::string& name, double value)\r
+void graph::set_text(const std::string& value)\r
 {\r
-       if(impl_)\r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
        {       \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->update(name, value);\r
-               });\r
-       }\r
+               p->set_text(value);\r
+       });\r
 }\r
 \r
-void graph::update_text(const std::string& value)\r
+void graph::set_text(const std::wstring& value)\r
 {\r
-       if(impl_)\r
-       {               \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->update_text(value);\r
-               });\r
-       }\r
+       set_text(narrow(value));\r
 }\r
 \r
-void graph::set_value(const std::string& name, double value)\r
+void graph::update_value(const std::string& name, double value)\r
 {\r
-       if(impl_)\r
-       {               \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->set(name, value);\r
-               });\r
-       }\r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
+       {       \r
+               p->update(name, value);\r
+       });\r
 }\r
-void graph::set_color(const std::string& name, color c)\r
+void graph::set_value(const std::string& name, double value)\r
 {      \r
-       if(impl_)\r
-       {               \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->set_color(name, c);\r
-               });\r
-       }\r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
+       {       \r
+               p->set(name, value);\r
+       });     \r
+}\r
+void graph::set_color(const std::string& name, color c)\r
+{              \r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
+       {       \r
+               p->set_color(name, c);\r
+       });\r
 }\r
 void graph::add_tag(const std::string& name)\r
-{      \r
-       if(impl_)\r
-       {               \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->tag(name);\r
-               });\r
-       }\r
+{              \r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
+       {       \r
+               p->tag(name);\r
+       });\r
 }\r
 void graph::add_guide(const std::string& name, double value)\r
 {      \r
-       if(impl_)\r
-       {               \r
-               auto p = impl_;\r
-               context::begin_invoke([=]\r
-               {       \r
-                       p->guide(name, value);\r
-               });\r
-       }\r
+       auto p = impl_;\r
+       context::begin_invoke([=]\r
+       {       \r
+               p->guide(name, value);\r
+       });\r
+}\r
+\r
+void register_graph(const safe_ptr<graph>& graph)\r
+{\r
+       context::register_drawable(graph->impl_);\r
 }\r
 \r
-safe_ptr<graph> create_graph(const std::string& name)\r
+void show_graphs(bool value)\r
 {\r
-       return safe_ptr<graph>(new graph(name));\r
+       context::show(value);\r
 }\r
 \r
 //namespace v2\r
index 0d9ef3d6226c954a11b522a8caeec23a2da5e816..268d74cb528aa8bbeba5e4199278a52b259502e7 100644 (file)
@@ -51,11 +51,12 @@ struct color
 \r
 class graph\r
 {\r
-       friend safe_ptr<graph> create_graph(const std::string& name);\r
-       graph(const std::string& name);\r
+       friend void register_graph(const safe_ptr<graph>& graph);\r
 public:\r
+       graph();\r
+       void set_text(const std::string& value);\r
+       void set_text(const std::wstring& value);\r
        void update_value(const std::string& name, double value);\r
-       void update_text(const std::string& value);\r
        void set_value(const std::string& name, double value);\r
        void set_color(const std::string& name, color c);\r
        void add_tag(const std::string& name);\r
@@ -65,8 +66,9 @@ private:
        std::shared_ptr<implementation> impl_;\r
 };\r
 \r
-safe_ptr<graph> create_graph(const std::string& name);\r
-       \r
+void register_graph(const safe_ptr<graph>& graph);\r
+void show_graphs(bool value);\r
+\r
 //namespace v2\r
 //{\r
 //     \r
index 682c98958090f469bd9ae76a549c8f94c7ce32f4..10b4d5864b6d39810dd30e66e07f8e41b0353865 100644 (file)
@@ -58,7 +58,6 @@ struct video_channel::implementation : boost::noncopyable
 public:\r
        implementation(int index, const video_format_desc& format_desc, ogl_device& ogl)  \r
                : context_(index, ogl, format_desc)\r
-               , diag_(diagnostics::create_graph(narrow(print())))\r
                , output_(new caspar::core::output(context_, [this]{restart();}))\r
                , mixer_(new caspar::core::mixer(context_))\r
                , stage_(new caspar::core::stage(context_))     \r
@@ -68,6 +67,8 @@ public:
                diag_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));    \r
                diag_->set_color("output-time", diagnostics::color(1.0f, 0.5f, 0.0f));\r
                diag_->set_color("mix-time", diagnostics::color(1.0f, 1.0f, 0.9f));\r
+               diag_->set_text(print());\r
+               diagnostics::register_graph(diag_);\r
 \r
                CASPAR_LOG(info) << print() << " Successfully Initialized.";\r
                context_.execution().begin_invoke([this]{tick();});\r
index 62e840670f79c40b74d0479b06d3c96e5109bea8..315e8cc336a7189469ad9761a0d1ad03e282b4bc 100644 (file)
@@ -53,7 +53,7 @@ struct bluefish_consumer : boost::noncopyable
 \r
        const std::wstring                                      model_name_;\r
 \r
-       std::shared_ptr<diagnostics::graph> graph_;\r
+       safe_ptr<diagnostics::graph>            graph_;\r
        boost::timer                                            frame_timer_;\r
        boost::timer                                            tick_timer_;\r
        boost::timer                                            sync_timer_;    \r
@@ -83,13 +83,14 @@ public:
        {\r
                executor_.set_capacity(core::consumer_buffer_depth());\r
 \r
-               graph_ = diagnostics::create_graph(narrow(print()));\r
                graph_->add_guide("tick-time", 0.5);\r
                graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));   \r
                graph_->add_guide("frame-time", 0.5f);  \r
                graph_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
                graph_->set_color("sync-time", diagnostics::color(0.5f, 1.0f, 0.2f));\r
                graph_->set_color("input-buffer", diagnostics::color(1.0f, 1.0f, 0.0f));\r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
                        \r
                //Setting output Video mode\r
                if(BLUE_FAIL(set_card_property(blue_, VIDEO_MODE, vid_fmt_))) \r
index dcfbde7f3afcf5dde5bcbe44f6d99e5574b275b8..e9c4227b1d765410eb93760e3cfdb7ee1cfbcbff 100644 (file)
@@ -156,7 +156,7 @@ struct decklink_consumer : public IDeckLinkVideoOutputCallback, public IDeckLink
        tbb::concurrent_bounded_queue<std::shared_ptr<core::read_frame>> video_frame_buffer_;\r
        tbb::concurrent_bounded_queue<std::shared_ptr<core::read_frame>> audio_frame_buffer_;\r
        \r
-       std::shared_ptr<diagnostics::graph> graph_;\r
+       safe_ptr<diagnostics::graph> graph_;\r
        boost::timer tick_timer_;\r
 \r
 public:\r
@@ -179,12 +179,13 @@ public:
                video_frame_buffer_.set_capacity(1);\r
                audio_frame_buffer_.set_capacity(1);\r
 \r
-               graph_ = diagnostics::create_graph(narrow(print()));\r
                graph_->add_guide("tick-time", 0.5);\r
                graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));   \r
                graph_->set_color("late-frame", diagnostics::color(0.6f, 0.3f, 0.3f));\r
                graph_->set_color("dropped-frame", diagnostics::color(0.3f, 0.6f, 0.3f));\r
                graph_->set_color("flushed-frame", diagnostics::color(0.4f, 0.3f, 0.8f));\r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
                \r
                enable_video(get_display_mode(output_, format_desc_.format, bmdFormat8BitBGRA, bmdVideoOutputFlagDefault));\r
                                \r
index d88cbf46a8d763326e8ccba105d0a1663835417d..31336c46c6a17fbcd588370c222757a37ece7fa4 100644 (file)
@@ -4,7 +4,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Thu Nov 10 08:57:13 2011\r
+/* at Thu Nov 10 16:28:32 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 9429f04e118aa27476b758cc51b109cba0d1aaf3..3284b293feae089087c632c8770d86bc878dcccc 100644 (file)
@@ -6,7 +6,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Thu Nov 10 08:57:13 2011\r
+/* at Thu Nov 10 16:28:32 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 178b0042c1dd6a3bce18989fca03fef82d34e3b4..176e79f56ee79dd6394a27c1b285581d480702d4 100644 (file)
@@ -82,7 +82,7 @@ class decklink_producer : boost::noncopyable, public IDeckLinkInputCallback
        const core::video_format_desc                                                           format_desc_;\r
        const size_t                                                                                            device_index_;\r
 \r
-       std::shared_ptr<diagnostics::graph>                                                     graph_;\r
+       safe_ptr<diagnostics::graph>                                                            graph_;\r
        boost::timer                                                                                            tick_timer_;\r
        boost::timer                                                                                            frame_timer_;\r
                \r
@@ -108,13 +108,14 @@ public:
        {\r
                frame_buffer_.set_capacity(2);\r
                \r
-               graph_ = diagnostics::create_graph(narrow(print()));\r
                graph_->add_guide("tick-time", 0.5);\r
                graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));   \r
                graph_->set_color("late-frame", diagnostics::color(0.6f, 0.3f, 0.3f));\r
                graph_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
                graph_->set_color("dropped-frame", diagnostics::color(0.3f, 0.6f, 0.3f));\r
                graph_->set_color("output-buffer", diagnostics::color(0.0f, 1.0f, 0.0f));\r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
                \r
                auto display_mode = get_display_mode(input_, format_desc_.format, bmdFormat8BitYUV, bmdVideoInputFlagDefault);\r
                \r
index 576f7a3cc05ace01b717e287e915274ce62f6441..02083d5bafaebb484cd020c9690771357817cf8a 100644 (file)
@@ -79,7 +79,6 @@ struct ffmpeg_producer : public core::frame_producer
 public:\r
        explicit ffmpeg_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filename, const std::wstring& filter, bool loop, int start, size_t length) \r
                : filename_(filename)\r
-               , graph_(diagnostics::create_graph(""))\r
                , frame_factory_(frame_factory)         \r
                , format_desc_(frame_factory->get_video_format_desc())\r
                , input_(graph_, filename_, loop, start, length)\r
@@ -98,6 +97,7 @@ public:
                graph_->add_guide("frame-time", 0.5);\r
                graph_->set_color("frame-time", diagnostics::color(0.1f, 1.0f, 0.1f));\r
                graph_->set_color("underflow", diagnostics::color(0.6f, 0.3f, 0.9f));   \r
+               diagnostics::register_graph(graph_);\r
                \r
                for(int n = 0; n < 3; ++n)\r
                        frame_factory->create_frame(this, std::max<size_t>(2, video_decoder_.width()), std::max<size_t>(2, video_decoder_.height()));\r
@@ -124,7 +124,7 @@ public:
                                graph_->add_tag("underflow");   \r
                }\r
 \r
-               graph_->update_text(narrow(print()));\r
+               graph_->set_text(print());\r
                \r
                return frame;\r
        }\r
index 67a556423fc72cae525bf742bed4f0ed157facf0..c14158d2b21ebc2dd83b4a9db5bfeb62c39b5da1 100644 (file)
@@ -278,7 +278,7 @@ struct flash_producer : public core::frame_producer
 \r
        tbb::atomic<int> fps_;\r
 \r
-       std::shared_ptr<diagnostics::graph> graph_;\r
+       safe_ptr<diagnostics::graph> graph_;\r
 \r
        tbb::concurrent_bounded_queue<safe_ptr<core::basic_frame>> frame_buffer_;\r
 \r
@@ -303,9 +303,10 @@ public:
 \r
                fps_ = 0;\r
 \r
-               graph_ = diagnostics::create_graph(narrow(print()));\r
                graph_->set_color("output-buffer-count", diagnostics::color(1.0f, 1.0f, 0.0f));          \r
                graph_->set_color("underflow", diagnostics::color(0.6f, 0.3f, 0.9f));   \r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
                \r
                frame_buffer_.set_capacity(frame_factory_->get_video_format_desc().fps > 30.0 ? 2 : 1);\r
 \r
@@ -419,7 +420,7 @@ public:
 \r
                                graph_->set_value("output-buffer-count", static_cast<float>(frame_buffer_.size())/static_cast<float>(frame_buffer_.capacity()));        \r
                                fps_.fetch_and_store(static_cast<int>(context_->fps()*100.0));                          \r
-                               graph_->update_text(narrow(print()));\r
+                               graph_->set_text(narrow(print()));\r
 \r
                                render(renderer);\r
                        }\r
index 35ef456d06f10f3eba6a2373e05c5733c8d31bfe..524cdf0c754742dc8596b49b37589d73b0400651 100644 (file)
@@ -54,8 +54,7 @@ struct oal_consumer : public core::frame_consumer,  public sf::SoundStream
        int                                                                                                     preroll_count_;\r
 public:\r
        oal_consumer() \r
-               : graph_(diagnostics::create_graph(narrow(print())))\r
-               , container_(16)\r
+               : container_(16)\r
                , preroll_count_(0)\r
        {\r
                if(core::consumer_buffer_depth() < 3)\r
@@ -63,6 +62,9 @@ public:
 \r
                graph_->add_guide("tick-time", 0.5);\r
                graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));   \r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
+\r
                is_running_ = true;\r
                input_.set_capacity(core::consumer_buffer_depth()-2);\r
        }\r
index 9550a5a1e81f99e783f7f444ee066021b83a3a7c..0f98c7db2449551f58fad7cc74048644f8a658ce 100644 (file)
@@ -134,7 +134,6 @@ public:
                , screen_height_(format_desc.height)\r
                , square_width_(format_desc.square_width)\r
                , square_height_(format_desc.square_height)\r
-               , graph_(diagnostics::create_graph(narrow(print())))\r
                , input_buffer_(core::consumer_buffer_depth()-1)\r
                , filter_(format_desc.field_mode == core::field_mode::progressive || !config.auto_deinterlace ? L"" : L"YADIF=0:-1", boost::assign::list_of(PIX_FMT_BGRA))\r
        {               \r
@@ -143,6 +142,8 @@ public:
                graph_->add_guide("frame-time", 0.5);\r
                graph_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
                graph_->set_color("dropped-frame", diagnostics::color(0.3f, 0.6f, 0.3f));\r
+               graph_->set_text(print());\r
+               diagnostics::register_graph(graph_);\r
                                                                        \r
                DISPLAY_DEVICE d_device = {sizeof(d_device), 0};                        \r
                std::vector<DISPLAY_DEVICE> displayDevices;\r
index aec863e885ec6ee4b4b6d7612b635b8f9fdad627..5fad85a3b8b31dc6c3169944f78b561f890eacfe 100644 (file)
@@ -30,6 +30,7 @@
 #include <common/env.h>\r
 \r
 #include <common/log/log.h>\r
+#include <common/diagnostics/graph.h>\r
 \r
 #include <core/producer/frame_producer.h>\r
 #include <core/video_format.h>\r
@@ -196,6 +197,24 @@ void AMCPCommand::Clear()
        _parameters.clear();\r
 }\r
 \r
+bool DiagnosticsCommand::DoExecute()\r
+{      \r
+       try\r
+       {\r
+               diagnostics::show_graphs(boost::lexical_cast<bool>(_parameters.at(0)));\r
+\r
+               SetReplyString(TEXT("202 DIAG OK\r\n"));\r
+\r
+               return true;\r
+       }\r
+       catch(...)\r
+       {\r
+               CASPAR_LOG_CURRENT_EXCEPTION();\r
+               SetReplyString(TEXT("502 DIAG FAILED\r\n"));\r
+               return false;\r
+       }\r
+}\r
+\r
 bool ParamCommand::DoExecute()\r
 {      \r
        //Perform loading of the clip\r
index ef5f53bda600c9d3a931bd68070823a851e3d4aa..f027be46bc72d26280b0edc062a16b062c43aad4 100644 (file)
@@ -30,6 +30,12 @@ std::wstring ListTemplates();
 \r
 namespace amcp {\r
        \r
+class DiagnosticsCommand : public AMCPCommandBase<false, AddToQueue, 0>\r
+{\r
+       std::wstring print() const { return L"DiagnosticsCommand";}\r
+       bool DoExecute();\r
+};\r
+\r
 class ParamCommand : public AMCPCommandBase<true, AddToQueue, 2>\r
 {\r
        std::wstring print() const { return L"ParamCommand";}\r
index 03b32196f6fea8bf36ff887e37d9f0d6c16c9146..c545088d6041cac2e9934e6e38fc1a267cfc14a9 100644 (file)
@@ -311,6 +311,7 @@ AMCPCommandPtr AMCPProtocolStrategy::CommandFactory(const std::wstring& str)
        transform(s.begin(), s.end(), s.begin(), toupper);\r
        \r
        if         (s == TEXT("MIXER"))         return std::make_shared<MixerCommand>();\r
+       else if(s == TEXT("DIAG"))              return std::make_shared<DiagnosticsCommand>();\r
        else if(s == TEXT("PARAM"))             return std::make_shared<ParamCommand>();\r
        else if(s == TEXT("SWAP"))              return std::make_shared<SwapCommand>();\r
        else if(s == TEXT("LOAD"))              return std::make_shared<LoadCommand>();\r
index 5a136818e493b838bc991017670d3d9bfb350e1d..655cefb3aa70554e001c3efc57af3e7e82709724 100644 (file)
@@ -1,14 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <paths>\r
-    <media-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 1\server\media\</media-path>\r
-    <log-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 1\server\log\</log-path>\r
-    <data-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 1\server\data\</data-path>\r
-    <template-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 1\server\templates\</template-path>\r
+    <media-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 2\server\media\</media-path>\r
+    <log-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 2\server\log\</log-path>\r
+    <data-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 2\server\data\</data-path>\r
+    <template-path>C:\Documents and Settings\rona01\Desktop\CasparCG 2.0 Beta 2\server\templates\</template-path>\r
   </paths>\r
-  <diagnostics>\r
-    <graphs>true</graphs>\r
-  </diagnostics>\r
   <mixers>\r
     <blend-modes>true</blend-modes>\r
   </mixers>\r
index 1ec92e818d3b6bc3b25614b0111fadbf8925dbc0..70012601be6c93c972c9940a5367755df70c4e8c 100644 (file)
@@ -251,7 +251,7 @@ copy "$(ProjectDir)casparcg.config" "$(OutDir)"</Command>
       </DataExecutionPrevention>\r
       <TargetMachine>MachineX86</TargetMachine>\r
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\r
-      <LargeAddressAware>false</LargeAddressAware>\r
+      <LargeAddressAware>true</LargeAddressAware>\r
     </Link>\r
     <PostBuildEvent>\r
       <Command>copy "$(SolutionDir)dlls\*.dll" "$(OutDir)"\r
index fb713a1ddf2facd657e4f3fb292aee84912fd35d..8e10167c02811fcc62c50f2bd59f0709a0aac5e7 100644 (file)
@@ -2,4 +2,4 @@
 #define CASPAR_MAYOR L"0"\r
 #define CASPAR_MINOR L"2"\r
 #define CASPAR_REV L"$WCREV$"\r
-#define CASPAR_TAG L"BETA 1"
\ No newline at end of file
+#define CASPAR_TAG L"BETA 2"\r