提交 88ede467 编写于 作者: J Jim

Merge pull request #199 from BtbN/qt_exit

Make application quit on main window close
......@@ -261,7 +261,11 @@ bool OBSApp::OBSInit()
config_save(globalConfig);
}
mainWindow = move(unique_ptr<OBSBasic>(new OBSBasic()));
mainWindow = new OBSBasic();
mainWindow->setAttribute(Qt::WA_DeleteOnClose, true);
connect(mainWindow, SIGNAL(destroyed()), this, SLOT(quit()));
mainWindow->OBSInit();
return true;
......
......@@ -19,6 +19,7 @@
#include <QApplication>
#include <QTranslator>
#include <QPointer>
#include <util/lexer.h>
#include <util/util.hpp>
#include <string>
......@@ -56,7 +57,7 @@ private:
std::string locale;
ConfigFile globalConfig;
TextLookup textLookup;
std::unique_ptr<OBSMainWindow> mainWindow;
QPointer<OBSMainWindow> mainWindow;
bool InitGlobalConfig();
bool InitGlobalConfigDefaults();
......@@ -68,7 +69,7 @@ public:
void AppInit();
bool OBSInit();
inline QMainWindow *GetMainWindow() const {return mainWindow.get();}
inline QMainWindow *GetMainWindow() const {return mainWindow.data();}
inline config_t GlobalConfig() const {return globalConfig;}
......
......@@ -588,8 +588,11 @@ OBSBasic::~OBSBasic()
delete cpuUsageTimer;
os_cpu_usage_info_destroy(cpuUsageInfo);
delete properties;
delete transformWindow;
if (properties)
delete properties;
if (transformWindow)
delete transformWindow;
ClearVolumeControls();
ui->sources->clear();
......@@ -648,11 +651,18 @@ void OBSBasic::InsertSceneItem(obs_sceneitem_t item)
ui->sources->setCurrentRow(0);
/* if the source was just created, open properties dialog */
if (sourceSceneRefs[source] == 0 && loaded) {
delete properties;
properties = new OBSBasicProperties(this, source);
properties->Init();
}
if (sourceSceneRefs[source] == 0 && loaded)
CreatePropertiesWindow(source);
}
void OBSBasic::CreatePropertiesWindow(obs_source_t source)
{
if (properties)
properties->close();
properties = new OBSBasicProperties(this, source);
properties->Init();
properties->setAttribute(Qt::WA_DeleteOnClose, true);
}
/* Qt callbacks for invokeMethod */
......@@ -1674,11 +1684,8 @@ void OBSBasic::on_actionSourceProperties_triggered()
OBSSceneItem item = GetCurrentSceneItem();
OBSSource source = obs_sceneitem_getsource(item);
if (source) {
delete properties;
properties = new OBSBasicProperties(this, source);
properties->Init();
}
if (source)
CreatePropertiesWindow(source);
}
void OBSBasic::on_actionSourceUp_triggered()
......@@ -2112,9 +2119,12 @@ config_t OBSBasic::Config() const
void OBSBasic::on_actionEditTransform_triggered()
{
delete transformWindow;
if (transformWindow)
transformWindow->close();
transformWindow = new OBSBasicTransform(this);
transformWindow->show();
transformWindow->setAttribute(Qt::WA_DeleteOnClose, true);
}
void OBSBasic::on_actionResetTransform_triggered()
......
......@@ -140,6 +140,8 @@ private:
void TempStreamOutput(const char *url, const char *key,
int vBitrate, int aBitrate);
void CreatePropertiesWindow(obs_source_t source);
public slots:
void StreamingStart();
void StreamingStop(int errorcode);
......
......@@ -36,8 +36,6 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
removedSignal (obs_source_signalhandler(source), "remove",
OBSBasicProperties::SourceRemoved, this)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
OBSData settings = obs_source_getsettings(source);
......
......@@ -37,8 +37,6 @@ OBSBasicTransform::OBSBasicTransform(OBSBasic *parent)
ui (new Ui::OBSBasicTransform),
main (parent)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
HookWidget(ui->positionX, DSCROLL_CHANGED, SLOT(OnControlChanged()));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册