From 9aa1d711479d4892e7f3c528dd48aad91f8a63de Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 1 Jan 2015 22:56:57 +0100 Subject: DOCS/client_api_examples: don't throw char* in C++ code C++ is the worst language ever, and allows throwing any type, even if it doesn't make sense. In this case, we were throwing char*, which the runtime typically treats as opaque, instead of printing it as message if such an exception was not caught. --- DOCS/client_api_examples/qml/mpvrenderer.cpp | 10 ++++++---- DOCS/client_api_examples/qtexample.cpp | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/DOCS/client_api_examples/qml/mpvrenderer.cpp b/DOCS/client_api_examples/qml/mpvrenderer.cpp index 6d214dfba8..0f6b6ba9f9 100644 --- a/DOCS/client_api_examples/qml/mpvrenderer.cpp +++ b/DOCS/client_api_examples/qml/mpvrenderer.cpp @@ -1,5 +1,7 @@ #include "mpvrenderer.h" +#include + #include #include #include @@ -27,7 +29,7 @@ public: { int r = mpv_opengl_cb_init_gl(mpv_gl, NULL, get_proc_address, NULL); if (r < 0) - throw "could not initialize OpenGL"; + throw std::runtime_error("could not initialize OpenGL"); } virtual ~MpvRenderer() @@ -53,13 +55,13 @@ MpvObject::MpvObject(QQuickItem * parent) { mpv = mpv::qt::Handle::FromRawHandle(mpv_create()); if (!mpv) - throw "could not create mpv context"; + throw std::runtime_error("could not create mpv context"); mpv_set_option_string(mpv, "terminal", "yes"); mpv_set_option_string(mpv, "msg-level", "all=v"); if (mpv_initialize(mpv) < 0) - throw "could not initialize mpv context"; + throw std::runtime_error("could not initialize mpv context"); // Make use of the MPV_SUB_API_OPENGL_CB API. mpv::qt::set_option_variant(mpv, "vo", "opengl-cb"); @@ -72,7 +74,7 @@ MpvObject::MpvObject(QQuickItem * parent) // doUpdate() function is run on the GUI thread. mpv_gl = (mpv_opengl_cb_context *)mpv_get_sub_api(mpv, MPV_SUB_API_OPENGL_CB); if (!mpv_gl) - throw "OpenGL not compiled in"; + throw std::runtime_error("OpenGL not compiled in"); mpv_opengl_cb_set_update_callback(mpv_gl, MpvObject::on_update, (void *)this); connect(this, &MpvObject::onUpdate, this, &MpvObject::doUpdate, Qt::QueuedConnection); diff --git a/DOCS/client_api_examples/qtexample.cpp b/DOCS/client_api_examples/qtexample.cpp index 2b8bc15533..756c206916 100644 --- a/DOCS/client_api_examples/qtexample.cpp +++ b/DOCS/client_api_examples/qtexample.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -55,7 +56,7 @@ MainWindow::MainWindow(QWidget *parent) : mpv = mpv_create(); if (!mpv) - throw "can't create mpv instance"; + throw std::runtime_error("can't create mpv instance"); // Create a video child window. Force Qt to create a native window, and // pass the window ID to the mpv wid option. Works on: X11, win32, Cocoa @@ -94,7 +95,7 @@ MainWindow::MainWindow(QWidget *parent) : mpv_set_wakeup_callback(mpv, wakeup, this); if (mpv_initialize(mpv) < 0) - throw "mpv failed to initialize"; + throw std::runtime_error("mpv failed to initialize"); } void MainWindow::handle_mpv_event(mpv_event *event) -- cgit v1.2.3