* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
*\r
*/\r
-#include "resource.h"\r
-\r
-#include "server.h"\r
\r
// tbbmalloc_proxy: \r
// Replace the standard memory allocation routines in Microsoft* C/C++ RTL \r
// (malloc/free, global new/delete, etc.) with the TBB memory allocator. \r
#include <tbb/tbbmalloc_proxy.h>\r
\r
+#include "resource.h"\r
+\r
+#include "server.h"\r
+\r
#ifdef _DEBUG\r
#define _CRTDBG_MAP_ALLOC\r
#include <stdlib.h>\r
#define WIN32_LEAN_AND_MEAN\r
\r
#include <windows.h>\r
+#include <winnt.h>\r
#include <mmsystem.h>\r
#include <atlbase.h>\r
\r
CASPAR_LOG(info) << L"FFMPEG-swscale " << caspar::get_swscale_version();\r
CASPAR_LOG(info) << L"OpenGL " << caspar::core::ogl_device::get_version() << "\n\n";\r
}\r
- \r
+\r
+LONG WINAPI UserUnhandledExceptionFilter(EXCEPTION_POINTERS* info)\r
+{\r
+ try\r
+ {\r
+ CASPAR_LOG(fatal) << L"#######################\n UNHANDLED EXCEPTION: \n" \r
+ << L"Adress:" << info->ExceptionRecord->ExceptionAddress << L"\n"\r
+ << L"Code:" << info->ExceptionRecord->ExceptionCode << L"\n"\r
+ << L"Flag:" << info->ExceptionRecord->ExceptionFlags << L"\n"\r
+ << L"Info:" << info->ExceptionRecord->ExceptionInformation << L"\n"\r
+ << L"Continuing execution. \n#######################";\r
+ }\r
+ catch(...){}\r
+\r
+ return EXCEPTION_CONTINUE_EXECUTION;\r
+}\r
+\r
int main(int argc, wchar_t* argv[])\r
{ \r
static_assert(sizeof(void*) == 4, "64-bit code generation is not supported.");\r
\r
+ SetUnhandledExceptionFilter(UserUnhandledExceptionFilter);\r
+\r
CASPAR_LOG(info) << L"Type \"q\" to close application";\r
\r
CASPAR_LOG(info) << L"THIS IS AN ALPHA BUILD";\r
tbb_thread_installer(){observe(true);}\r
void on_scheduler_entry(bool is_worker)\r
{\r
- caspar::detail::SetThreadName(GetCurrentThreadId(), "tbb-worker-thread");\r
+ //caspar::detail::SetThreadName(GetCurrentThreadId(), "tbb-worker-thread");\r
caspar::win32_exception::install_handler();\r
}\r
} tbb_thread_installer;\r
wcmd = L"CG 1-2 ADD 1 BBTELEFONARE 1";\r
else if(wcmd.substr(0, 1) == L"4")\r
wcmd = L"PLAY 1-1 DV FILTER yadif=1:-1 LOOP";\r
+ else if(wcmd.substr(0, 1) == L"5")\r
+ {\r
+ auto file = wcmd.substr(2, wcmd.length()-1);\r
+ wcmd = L"PLAY 1-1 " + file + L" LOOP\r\n" \r
+ L"PLAY 1-2 " + file + L" LOOP\r\n" \r
+ L"PLAY 1-3 " + file + L" LOOP\r\n"\r
+ L"PLAY 2-1 " + file + L" LOOP\r\n" \r
+ L"PLAY 2-2 " + file + L" LOOP\r\n" \r
+ L"PLAY 2-3 " + file + L" LOOP\r\n";\r
+ }\r
else if(wcmd.substr(0, 1) == L"X")\r
{\r
int num = 0;\r
n++;\r
}\r
\r
- wcmd = L"MIXER 1 VIDEO GRID " + boost::lexical_cast<std::wstring>(n);\r
+ wcmd = L"MIXER 1 GRID " + boost::lexical_cast<std::wstring>(n);\r
\r
for(int i = 1; i <= num; ++i)\r
wcmd += L"\r\nPLAY 1-" + boost::lexical_cast<std::wstring>(i) + L" " + file + L" LOOP";// + L" SLIDE 100 LOOP";\r