Skip to content

Commit 5582ea1

Browse files
committed
frontend: Use qobject_cast when casting QObjects
When casting between QObjects, qobject_cast should always be used. This increases performance as there is no RTTI (Run Time Type Information) with qobject_cast, like there is with dynamic_cast.
1 parent 3911f11 commit 5582ea1

26 files changed

Lines changed: 57 additions & 57 deletions

frontend/components/SourceTree.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ bool SourceTree::Edit(int row)
476476

477477
QModelIndex index = stm->createIndex(row, 0);
478478
QWidget *widget = indexWidget(index);
479-
SourceTreeItem *itemWidget = reinterpret_cast<SourceTreeItem *>(widget);
479+
SourceTreeItem *itemWidget = qobject_cast<SourceTreeItem *>(widget);
480480
if (itemWidget->IsEditing()) {
481481
#ifdef __APPLE__
482482
itemWidget->ExitEditMode(true);

frontend/components/SourceTree.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ class SourceTree : public QListView {
2929
void UpdateWidget(const QModelIndex &idx, obs_sceneitem_t *item);
3030
void UpdateWidgets(bool force = false);
3131

32-
inline SourceTreeModel *GetStm() const { return reinterpret_cast<SourceTreeModel *>(model()); }
32+
inline SourceTreeModel *GetStm() const { return qobject_cast<SourceTreeModel *>(model()); }
3333

3434
public:
3535
inline SourceTreeItem *GetItemWidget(int idx)
3636
{
3737
QWidget *widget = indexWidget(GetStm()->createIndex(idx, 0));
38-
return reinterpret_cast<SourceTreeItem *>(widget);
38+
return qobject_cast<SourceTreeItem *>(widget);
3939
}
4040

4141
explicit SourceTree(QWidget *parent = nullptr);

frontend/dialogs/OBSYoutubeActions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const QString IndexOfGamingCategory = "20";
2020
OBSYoutubeActions::OBSYoutubeActions(QWidget *parent, Auth *auth, bool broadcastReady)
2121
: QDialog(parent),
2222
ui(new Ui::OBSYoutubeActions),
23-
apiYouTube(dynamic_cast<YoutubeApiWrappers *>(auth)),
23+
apiYouTube(qobject_cast<YoutubeApiWrappers *>(auth)),
2424
workerThread(new WorkerThread(apiYouTube)),
2525
broadcastReady(broadcastReady)
2626
{

frontend/docks/YouTubeAppDock.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ YoutubeApiWrappers *YouTubeAppDock::GetYTApi()
381381
{
382382
Auth *auth = OBSBasic::Get()->GetAuth();
383383
if (auth) {
384-
YoutubeApiWrappers *apiYouTube(dynamic_cast<YoutubeApiWrappers *>(auth));
384+
YoutubeApiWrappers *apiYouTube(qobject_cast<YoutubeApiWrappers *>(auth));
385385
if (apiYouTube) {
386386
return apiYouTube;
387387
} else {

frontend/importer/ImporterEntryPathItemDelegate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ void ImporterEntryPathItemDelegate::handleClear(QWidget *container)
154154

155155
void ImporterEntryPathItemDelegate::updateText()
156156
{
157-
QLineEdit *lineEdit = dynamic_cast<QLineEdit *>(sender());
157+
QLineEdit *lineEdit = qobject_cast<QLineEdit *>(sender());
158158
QWidget *editor = lineEdit->parentWidget();
159159
emit commitData(editor);
160160
}

frontend/settings/OBSBasicSettings.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ static inline bool SetInvalidValue(QComboBox *combo, const char *name, const cha
135135
{
136136
combo->insertItem(0, name, data);
137137

138-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(combo->model());
138+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(combo->model());
139139
if (!model)
140140
return false;
141141

@@ -1199,7 +1199,7 @@ void OBSBasicSettings::LoadBranchesList()
11991199

12001200
// Disable item if branch is disabled
12011201
if (!branch.is_enabled) {
1202-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(ui->updateChannelBox->model());
1202+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(ui->updateChannelBox->model());
12031203
QStandardItem *item = model->item(ui->updateChannelBox->count() - 1);
12041204
item->setFlags(Qt::NoItemFlags);
12051205
}
@@ -4480,7 +4480,7 @@ static void DisableIncompatibleCodecs(QComboBox *cbox, const QString &format, co
44804480
is_compatible = FFCodecAndFormatCompatible(codec, ext.c_str());
44814481
}
44824482

4483-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(cbox->model());
4483+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(cbox->model());
44844484
QStandardItem *item = model->item(idx);
44854485

44864486
if (is_compatible) {
@@ -4538,7 +4538,7 @@ static void ResetInvalidSelection(QComboBox *cbox)
45384538
if (idx < 0)
45394539
return;
45404540

4541-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(cbox->model());
4541+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(cbox->model());
45424542
QStandardItem *item = model->item(idx);
45434543

45444544
if (item->isEnabled())
@@ -5091,7 +5091,7 @@ static void DisableIncompatibleSimpleCodecs(QComboBox *cbox, const QString &form
50915091
codec = obs_get_encoder_codec(encoder_id);
50925092
}
50935093

5094-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(cbox->model());
5094+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(cbox->model());
50955095
QStandardItem *item = model->item(idx);
50965096

50975097
if (ContainerSupportsCodec(format.toStdString(), codec.toStdString())) {
@@ -5121,7 +5121,7 @@ static void DisableIncompatibleSimpleContainer(QComboBox *cbox, const QString &c
51215121
QString format = cbox->itemData(idx).toString();
51225122
string formatStr = format.toStdString();
51235123

5124-
QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(cbox->model());
5124+
QStandardItemModel *model = qobject_cast<QStandardItemModel *>(cbox->model());
51255125
QStandardItem *item = model->item(idx);
51265126

51275127
if (ContainerSupportsCodec(formatStr, vCodec) && ContainerSupportsCodec(formatStr, aCodec)) {

frontend/settings/OBSBasicSettings_Stream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ OBSService OBSBasicSettings::SpawnTempService()
761761

762762
void OBSBasicSettings::OnOAuthStreamKeyConnected()
763763
{
764-
OAuthStreamKey *a = reinterpret_cast<OAuthStreamKey *>(auth.get());
764+
OAuthStreamKey *a = qobject_cast<OAuthStreamKey *>(auth.get());
765765

766766
if (a) {
767767
bool validKey = !a->key().empty();

frontend/settings/OBSHotkeyWidget.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class OBSHotkeyWidget : public QWidget {
8787
bool ignoreChangedBindings = false;
8888
OBSBasicSettings *settings;
8989

90-
QVBoxLayout *layout() const { return dynamic_cast<QVBoxLayout *>(QWidget::layout()); }
90+
QVBoxLayout *layout() const { return qobject_cast<QVBoxLayout *>(QWidget::layout()); }
9191

9292
private slots:
9393
void HandleChangedBindings(obs_hotkey_id id_);

frontend/utility/ExtraBrowsersDelegate.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ QWidget *ExtraBrowsersDelegate::createEditor(QWidget *parent, const QStyleOption
2121

2222
void ExtraBrowsersDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
2323
{
24-
QLineEdit *text = reinterpret_cast<QLineEdit *>(editor);
24+
QLineEdit *text = qobject_cast<QLineEdit *>(editor);
2525
text->blockSignals(true);
2626
text->setText(index.data().toString());
2727
text->blockSignals(false);
@@ -65,7 +65,7 @@ bool ExtraBrowsersDelegate::ValidName(const QString &name) const
6565

6666
void ExtraBrowsersDelegate::RevertText(QLineEdit *edit_)
6767
{
68-
EditWidget *edit = reinterpret_cast<EditWidget *>(edit_);
68+
EditWidget *edit = qobject_cast<EditWidget *>(edit_);
6969
int row = edit->index.row();
7070
int col = edit->index.column();
7171
bool newItem = (row == model->items.size());
@@ -82,7 +82,7 @@ void ExtraBrowsersDelegate::RevertText(QLineEdit *edit_)
8282

8383
bool ExtraBrowsersDelegate::UpdateText(QLineEdit *edit_)
8484
{
85-
EditWidget *edit = reinterpret_cast<EditWidget *>(edit_);
85+
EditWidget *edit = qobject_cast<EditWidget *>(edit_);
8686
int row = edit->index.row();
8787
int col = edit->index.column();
8888
bool newItem = (row == model->items.size());

frontend/utility/ExtraBrowsersModel.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ Qt::ItemFlags ExtraBrowsersModel::flags(const QModelIndex &index) const
9292
}
9393
void ExtraBrowsersModel::AddDeleteButton(int idx)
9494
{
95-
QTableView *widget = reinterpret_cast<QTableView *>(parent());
95+
QTableView *widget = qobject_cast<QTableView *>(parent());
9696

9797
QModelIndex index = createIndex(idx, (int)Column::Delete, nullptr);
9898

@@ -134,7 +134,7 @@ void ExtraBrowsersModel::UpdateItem(Item &item)
134134
int idx = item.prevIdx;
135135

136136
OBSBasic *main = OBSBasic::Get();
137-
BrowserDock *dock = reinterpret_cast<BrowserDock *>(main->extraBrowserDocks[idx].get());
137+
BrowserDock *dock = qobject_cast<BrowserDock *>(main->extraBrowserDocks[idx].get());
138138
dock->setWindowTitle(item.title);
139139
dock->setObjectName(item.title + OBJ_NAME_SUFFIX);
140140

@@ -152,9 +152,9 @@ void ExtraBrowsersModel::UpdateItem(Item &item)
152152

153153
void ExtraBrowsersModel::DeleteItem()
154154
{
155-
QTableView *widget = reinterpret_cast<QTableView *>(parent());
155+
QTableView *widget = qobject_cast<QTableView *>(parent());
156156

157-
DelButton *del = reinterpret_cast<DelButton *>(sender());
157+
DelButton *del = qobject_cast<DelButton *>(sender());
158158
int row = del->index.row();
159159

160160
/* there's some sort of internal bug in Qt and deleting certain index
@@ -211,7 +211,7 @@ void ExtraBrowsersModel::Apply()
211211

212212
void ExtraBrowsersModel::TabSelection(bool forward)
213213
{
214-
QListView *widget = reinterpret_cast<QListView *>(parent());
214+
QListView *widget = qobject_cast<QListView *>(parent());
215215
QItemSelectionModel *selModel = widget->selectionModel();
216216

217217
QModelIndex sel = selModel->currentIndex();

0 commit comments

Comments
 (0)