Changes of Revision 77
obs-studio.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sun Apr 05 21:29:12 UTC 2020 - jimmy@boombatower.com
4
+
5
+- Update to version 25.0.4:
6
+ * libobs: Update version to 25.0.4
7
+ * win-capture: Update graphics hook version to 1.1.4
8
+ * UI: Don't stretch server field in Qt 5.14
9
+ * obs-browser: Fix interact keyboard input on Linux
10
+ * Decklink: Fix crash when no matching device
11
+ * libobs: Fix macOS 10.15 hotkey crash (temporary)
12
+ * win-capture: Fix crash if GPU can't Vulkan capture
13
+ * docs/sphinx: Bump major OBS version
14
+ * UI: Use Qt dialogs for Font & Color Pickers on Linux
15
+ * obs-qsv11: Fix QuickSync LA_ICQ encoder settings
16
+ * rtmp-services: Remove executable bits from json files
17
+ * obs-ffmpeg: Expose old NVENC on Windows 7
18
+ * UI: Fix text handling for dialogs
19
+ * libobs-winrt: Stronger exception handling
20
+ * UI: Fix silent scenes with imported SL scenes
21
+
22
+-------------------------------------------------------------------
23
Tue Mar 24 15:03:52 UTC 2020 - jimmy@boombatower.com
24
25
- Update to version 25.0.3:
26
obs-studio.spec
Changed
8
1
2
Name: obs-studio
3
-Version: 25.0.3
4
+Version: 25.0.4
5
Release: 0
6
Summary: A recording/broadcasting program
7
Group: Productivity/Multimedia/Video/Editors and Convertors
8
_service
Changed
10
1
2
<services>
3
<service name="tar_scm" mode="disabled">
4
<param name="versionformat">@PARENT_TAG@</param>
5
- <param name="revision">refs/tags/25.0.3</param>
6
+ <param name="revision">refs/tags/25.0.4</param>
7
<param name="url">git://github.com/jp9000/obs-studio.git</param>
8
<param name="scm">git</param>
9
<param name="changesgenerate">enable</param>
10
_servicedata
Changed
9
1
2
<servicedata>
3
<service name="tar_scm">
4
<param name="url">git://github.com/jp9000/obs-studio.git</param>
5
- <param name="changesrevision">3c78a8aa8d5f5c3fd0242697c06582dc96daa012</param>
6
+ <param name="changesrevision">47058d9b6999f14bb5e2c76f7ae449efa2ca1c13</param>
7
</service>
8
</servicedata>
9
obs-studio-25.0.3.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-25.0.4.tar.xz/UI/forms/OBSBasicSettings.ui
Changed
14
1
2
</item>
3
<item row="0" column="1">
4
<widget class="QStackedWidget" name="serverStackedWidget">
5
+ <property name="sizePolicy">
6
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
7
+ <horstretch>0</horstretch>
8
+ <verstretch>0</verstretch>
9
+ </sizepolicy>
10
+ </property>
11
<property name="currentIndex">
12
<number>1</number>
13
</property>
14
obs-studio-25.0.3.tar.xz/UI/importers/sl.cpp -> obs-studio-25.0.4.tar.xz/UI/importers/sl.cpp
Changed
30
1
2
Json::array filter_items = in_filters["items"].array_items();
3
4
Json in_settings = scene["settings"];
5
- Json in_sync = scene["syncOffset"];
6
7
- int sync = (int)(in_sync["sec"].number_value() * 1000000000 +
8
- in_sync["nsec"].number_value());
9
-
10
- double vol = scene["volume"].number_value();
11
- bool muted = scene["muted"].bool_value();
12
string name = scene["name"].string_value();
13
- int monitoring = scene["monitoringType"].int_value();
14
15
Json::object out_hotkeys = Json::object{};
16
get_hotkey_bindings(out_hotkeys, hotkey_items, "");
17
18
{"id", "scene"},
19
{"sl_id", sl_id},
20
{"settings", in_settings},
21
- {"sync", sync},
22
- {"volume", vol},
23
- {"muted", muted},
24
+ {"volume", 1.0},
25
{"name", out_name},
26
- {"monitoring_type", monitoring},
27
{"private_settings", Json::object{}}};
28
29
Json in_items = scene["sceneItems"];
30
obs-studio-25.0.3.tar.xz/UI/properties-view.cpp -> obs-studio-25.0.4.tar.xz/UI/properties-view.cpp
Changed
19
1
2
* other open QDialogs on exit, and
3
* https://bugreports.qt-project.org/browse/QTBUG-34532
4
*/
5
-#ifdef __APPLE__
6
+#ifndef _WIN32
7
options |= QColorDialog::DontUseNativeDialog;
8
#endif
9
10
11
12
QFontDialog::FontDialogOptions options;
13
14
-#ifdef __APPLE__
15
+#ifndef _WIN32
16
options = QFontDialog::DontUseNativeDialog;
17
#endif
18
19
obs-studio-25.0.3.tar.xz/UI/window-basic-main.cpp -> obs-studio-25.0.4.tar.xz/UI/window-basic-main.cpp
Changed
10
1
2
obs_data_get_string(curPrivData, "color");
3
const char *customColor = *oldColor != 0 ? oldColor
4
: "#55FF0000";
5
-#ifdef __APPLE__
6
+#ifndef _WIN32
7
options |= QColorDialog::DontUseNativeDialog;
8
#endif
9
10
obs-studio-25.0.3.tar.xz/UI/window-importer.cpp -> obs-studio-25.0.4.tar.xz/UI/window-importer.cpp
Changed
20
1
2
QSizePolicy::ControlType::LineEdit));
3
layout->addWidget(text);
4
5
+ QObject::connect(text, SIGNAL(editingFinished()), this,
6
+ SLOT(updateText()));
7
+
8
QToolButton *browseButton = new QToolButton();
9
browseButton->setText("...");
10
browseButton->setSizePolicy(buttonSizePolicy);
11
12
{
13
QLineEdit *text = editor->findChild<QLineEdit *>();
14
text->setText(index.data().toString());
15
- QObject::connect(text, SIGNAL(textEdited(QString)), this,
16
- SLOT(updateText()));
17
editor->setProperty(PATH_LIST_PROP, QVariant());
18
}
19
20
obs-studio-25.0.3.tar.xz/UI/window-remux.cpp -> obs-studio-25.0.4.tar.xz/UI/window-remux.cpp
Changed
20
1
2
QSizePolicy::ControlType::LineEdit));
3
layout->addWidget(text);
4
5
+ QObject::connect(text, SIGNAL(editingFinished()), this,
6
+ SLOT(updateText()));
7
+
8
QToolButton *browseButton = new QToolButton();
9
browseButton->setText("...");
10
browseButton->setSizePolicy(buttonSizePolicy);
11
12
{
13
QLineEdit *text = editor->findChild<QLineEdit *>();
14
text->setText(index.data().toString());
15
- QObject::connect(text, SIGNAL(textEdited(QString)), this,
16
- SLOT(updateText()));
17
editor->setProperty(PATH_LIST_PROP, QVariant());
18
}
19
20
obs-studio-25.0.3.tar.xz/docs/sphinx/conf.py -> obs-studio-25.0.4.tar.xz/docs/sphinx/conf.py
Changed
13
1
2
# built documents.
3
#
4
# The short X.Y version.
5
-version = '20.1.0'
6
+version = '25.0.0'
7
# The full version, including alpha/beta/rc tags.
8
-release = '20.1.0'
9
+release = '25.0.0'
10
11
# The language for content autogenerated by Sphinx. Refer to documentation
12
# for a list of supported languages.
13
obs-studio-25.0.3.tar.xz/libobs-winrt/winrt-capture.cpp -> obs-studio-25.0.4.tar.xz/libobs-winrt/winrt-capture.cpp
Changed
59
1
2
return winrt::Windows::Foundation::Metadata::ApiInformation::
3
IsApiContractPresent(L"Windows.Foundation.UniversalApiContract",
4
8);
5
-} catch (winrt::hresult_error &err) {
6
+} catch (const winrt::hresult_error &err) {
7
blog(LOG_ERROR, "winrt_capture_supported (0x%08X): %ls", err.to_abi(),
8
err.message().c_str());
9
return false;
10
+} catch (...) {
11
+ blog(LOG_ERROR, "winrt_capture_supported (0x%08X)",
12
+ winrt::to_hresult());
13
+ return false;
14
}
15
16
extern "C" EXPORT BOOL winrt_capture_cursor_toggle_supported()
17
18
#else
19
return false;
20
#endif
21
-} catch (winrt::hresult_error &err) {
22
+} catch (const winrt::hresult_error &err) {
23
blog(LOG_ERROR, "winrt_capture_cursor_toggle_supported (0x%08X): %ls",
24
err.to_abi(), err.message().c_str());
25
return false;
26
+} catch (...) {
27
+ blog(LOG_ERROR, "winrt_capture_cursor_toggle_supported (0x%08X)",
28
+ winrt::to_hresult());
29
+ return false;
30
}
31
32
template<typename T>
33
34
blog(LOG_ERROR, "CreateForWindow (0x%08X): %ls", err.to_abi(),
35
err.message().c_str());
36
return nullptr;
37
+ } catch (...) {
38
+ blog(LOG_ERROR, "CreateForWindow (0x%08X)",
39
+ winrt::to_hresult());
40
+ return nullptr;
41
}
42
43
const winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice
44
45
46
return capture;
47
48
-} catch (winrt::hresult_error &err) {
49
+} catch (const winrt::hresult_error &err) {
50
blog(LOG_ERROR, "winrt_capture_init (0x%08X): %ls", err.to_abi(),
51
err.message().c_str());
52
return nullptr;
53
+} catch (...) {
54
+ blog(LOG_ERROR, "winrt_capture_init (0x%08X)", winrt::to_hresult());
55
+ return nullptr;
56
}
57
58
extern "C" EXPORT void winrt_capture_free(struct winrt_capture *capture)
59
obs-studio-25.0.3.tar.xz/libobs/obs-cocoa.m -> obs-studio-25.0.4.tar.xz/libobs/obs-cocoa.m
Changed
62
1
2
blog(LOG_INFO, "OS Name: %s", name ? name : "Unknown");
3
}
4
5
+static bool using_10_15_or_above = true;
6
+
7
static void log_os_version(id pi, SEL UTF8StringSel)
8
{
9
typedef id (*version_func)(id, SEL);
10
11
const char *version = UTF8String(vs, UTF8StringSel);
12
13
blog(LOG_INFO, "OS Version: %s", version ? version : "Unknown");
14
+
15
+ if (version) {
16
+ int major;
17
+ int minor;
18
+
19
+ int count = sscanf(version, "Version %d.%d", &major, &minor);
20
+ if (count == 2 && major == 10) {
21
+ using_10_15_or_above = minor >= 15;
22
+ }
23
+ }
24
}
25
26
static void log_os(void)
27
28
29
struct obs_hotkeys_platform {
30
volatile long refs;
31
+ bool secure_input_activated;
32
TISInputSourceRef tis;
33
CFDataRef layout_data;
34
UCKeyboardLayout *layout;
35
36
if (key >= OBS_KEY_LAST_VALUE)
37
return false;
38
39
+ /* if secure input is activated, kill hotkeys.
40
+ *
41
+ * TODO: rewrite all mac hotkey code, suspect there's a bug in 10.15
42
+ * causing the crash internally. */
43
+ if (plat->secure_input_activated) {
44
+ return false;
45
+ }
46
+
47
for (size_t i = 0; i < plat->keys[key].num;) {
48
IOHIDElementRef element = plat->keys[key].array[i];
49
IOHIDValueRef value = 0;
50
51
continue;
52
}
53
54
+ if (using_10_15_or_above && IsSecureEventInputEnabled()) {
55
+ plat->secure_input_activated = true;
56
+ return false;
57
+ }
58
+
59
if (IOHIDDeviceGetValue(device, element, &value) !=
60
kIOReturnSuccess) {
61
i += 1;
62
obs-studio-25.0.3.tar.xz/libobs/obs-config.h -> obs-studio-25.0.4.tar.xz/libobs/obs-config.h
Changed
10
1
2
*
3
* Reset to zero each major or minor version
4
*/
5
-#define LIBOBS_API_PATCH_VER 3
6
+#define LIBOBS_API_PATCH_VER 4
7
8
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \
9
((major << 24) | (minor << 16) | patch)
10
obs-studio-25.0.3.tar.xz/plugins/decklink/decklink-output.cpp -> obs-studio-25.0.4.tar.xz/plugins/decklink/decklink-output.cpp
Changed
11
1
2
3
device.Set(deviceEnum->FindByHash(decklink->deviceHash));
4
5
+ if (!device)
6
+ return false;
7
+
8
DeckLinkDeviceMode *mode = device->FindOutputMode(decklink->modeID);
9
10
decklink->SetSize(mode->GetWidth(), mode->GetHeight());
11
obs-studio-25.0.3.tar.xz/plugins/obs-browser/CMakeLists.txt -> obs-studio-25.0.4.tar.xz/plugins/obs-browser/CMakeLists.txt
Changed
18
1
2
endif()
3
endif()
4
5
+if(UNIX AND NOT APPLE)
6
+ find_package(X11 REQUIRED)
7
+ if(NOT X11_FOUND)
8
+ message(STATUS "X11 Not found -- obs-browser plugin disabled.")
9
+ return()
10
+ endif()
11
+ include_directories("${X11_INCLUDE_DIR}")
12
+endif()
13
+
14
+
15
configure_file(
16
"${CMAKE_CURRENT_SOURCE_DIR}/browser-config.h.in"
17
"${CMAKE_CURRENT_BINARY_DIR}/browser-config.h")
18
obs-studio-25.0.4.tar.xz/plugins/obs-browser/linux-keyboard-helpers.hpp
Added
754
1
2
+#pragma once
3
+
4
+#define XK_3270
5
+#include <X11/keysym.h>
6
+#include <X11/XF86keysym.h>
7
+
8
+#ifndef VKEY_UNKNOWN
9
+
10
+#define VKEY_UNKNOWN 0
11
+
12
+// POSIX specific VKEYs. Note that as of Windows SDK 7.1, 0x97-9F, 0xD8-DA,
13
+// and 0xE8 are unassigned.
14
+#define VKEY_WLAN 0x97
15
+#define VKEY_POWER 0x98
16
+#define VKEY_BRIGHTNESS_DOWN 0xD8
17
+#define VKEY_BRIGHTNESS_UP 0xD9
18
+#define VKEY_KBD_BRIGHTNESS_DOWN 0xDA
19
+#define VKEY_KBD_BRIGHTNESS_UP 0xE8
20
+
21
+// Windows does not have a specific key code for AltGr. We use the unused 0xE1
22
+// (VK_OEM_AX) code to represent AltGr, matching the behaviour of Firefox on
23
+// Linux.
24
+#define VKEY_ALTGR 0xE1
25
+// Windows does not have a specific key code for Compose. We use the unused
26
+// 0xE6 (VK_ICO_CLEAR) code to represent Compose.
27
+#define VKEY_COMPOSE 0xE6
28
+
29
+// Left mouse button
30
+#ifndef VKEY_LBUTTON
31
+#define VKEY_LBUTTON 0x01
32
+#endif
33
+// Right mouse button
34
+#ifndef VKEY_RBUTTON
35
+#define VKEY_RBUTTON 0x02
36
+#endif
37
+// Middle mouse button (three-button mouse)
38
+#ifndef VKEY_MBUTTON
39
+#define VKEY_MBUTTON 0x04
40
+#endif
41
+#ifndef VKEY_XBUTTON1
42
+#define VKEY_XBUTTON1 0x05
43
+#endif
44
+#ifndef VKEY_XBUTTON2
45
+#define VKEY_XBUTTON2 0x06
46
+#endif
47
+
48
+#ifndef VKEY_BACK
49
+#define VKEY_BACK 0x08
50
+#endif
51
+#ifndef VKEY_TAB
52
+#define VKEY_TAB 0x09
53
+#endif
54
+#ifndef VKEY_CLEAR
55
+#define VKEY_CLEAR 0x0C
56
+#endif
57
+#ifndef VKEY_RETURN
58
+#define VKEY_RETURN 0x0D
59
+#endif
60
+#ifndef VKEY_SHIFT
61
+#define VKEY_SHIFT 0x10
62
+#endif
63
+#ifndef VKEY_CONTROL
64
+#define VKEY_CONTROL 0x11 // CTRL key
65
+#endif
66
+#ifndef VKEY_MENU
67
+#define VKEY_MENU 0x12 // ALT key
68
+#endif
69
+#ifndef VKEY_PAUSE
70
+#define VKEY_PAUSE 0x13 // PAUSE key
71
+#endif
72
+#ifndef VKEY_CAPITAL
73
+#define VKEY_CAPITAL 0x14 // CAPS LOCK key
74
+#endif
75
+#ifndef VKEY_KANA
76
+#define VKEY_KANA 0x15 // Input Method Editor (IME) Kana mode
77
+#endif
78
+#ifndef VKEY_HANGUL
79
+#define VKEY_HANGUL 0x15 // IME Hangul mode
80
+#endif
81
+#ifndef VKEY_JUNJA
82
+#define VKEY_JUNJA 0x17 // IME Junja mode
83
+#endif
84
+#ifndef VKEY_FINAL
85
+#define VKEY_FINAL 0x18 // IME final mode
86
+#endif
87
+#ifndef VKEY_HANJA
88
+#define VKEY_HANJA 0x19 // IME Hanja mode
89
+#endif
90
+#ifndef VKEY_KANJI
91
+#define VKEY_KANJI 0x19 // IME Kanji mode
92
+#endif
93
+#ifndef VKEY_ESCAPE
94
+#define VKEY_ESCAPE 0x1B // ESC key
95
+#endif
96
+#ifndef VKEY_CONVERT
97
+#define VKEY_CONVERT 0x1C // IME convert
98
+#endif
99
+#ifndef VKEY_NONCONVERT
100
+#define VKEY_NONCONVERT 0x1D // IME nonconvert
101
+#endif
102
+#ifndef VKEY_ACCEPT
103
+#define VKEY_ACCEPT 0x1E // IME accept
104
+#endif
105
+#ifndef VKEY_MODECHANGE
106
+#define VKEY_MODECHANGE 0x1F // IME mode change request
107
+#endif
108
+#ifndef VKEY_SPACE
109
+#define VKEY_SPACE 0x20 // SPACE key
110
+#endif
111
+#ifndef VKEY_PRIOR
112
+#define VKEY_PRIOR 0x21 // PAGE UP key
113
+#endif
114
+#ifndef VKEY_NEXT
115
+#define VKEY_NEXT 0x22 // PAGE DOWN key
116
+#endif
117
+#ifndef VKEY_END
118
+#define VKEY_END 0x23 // END key
119
+#endif
120
+#ifndef VKEY_HOME
121
+#define VKEY_HOME 0x24 // HOME key
122
+#endif
123
+#ifndef VKEY_LEFT
124
+#define VKEY_LEFT 0x25 // LEFT ARROW key
125
+#endif
126
+#ifndef VKEY_UP
127
+#define VKEY_UP 0x26 // UP ARROW key
128
+#endif
129
+#ifndef VKEY_RIGHT
130
+#define VKEY_RIGHT 0x27 // RIGHT ARROW key
131
+#endif
132
+#ifndef VKEY_DOWN
133
+#define VKEY_DOWN 0x28 // DOWN ARROW key
134
+#endif
135
+#ifndef VKEY_SELECT
136
+#define VKEY_SELECT 0x29 // SELECT key
137
+#endif
138
+#ifndef VKEY_PRINT
139
+#define VKEY_PRINT 0x2A // PRINT key
140
+#endif
141
+#ifndef VKEY_EXECUTE
142
+#define VKEY_EXECUTE 0x2B // EXECUTE key
143
+#endif
144
+#ifndef VKEY_SNAPSHOT
145
+#define VKEY_SNAPSHOT 0x2C // PRINT SCREEN key
146
+#endif
147
+#ifndef VKEY_INSERT
148
+#define VKEY_INSERT 0x2D // INS key
149
+#endif
150
+#ifndef VKEY_DELETE
151
+#define VKEY_DELETE 0x2E // DEL key
152
+#endif
153
+#ifndef VKEY_HELP
154
+#define VKEY_HELP 0x2F // HELP key
155
+#endif
156
+
157
+#define VKEY_0 0x30
158
+#define VKEY_1 0x31
159
+#define VKEY_2 0x32
160
+#define VKEY_3 0x33
161
+#define VKEY_4 0x34
162
+#define VKEY_5 0x35
163
+#define VKEY_6 0x36
164
+#define VKEY_7 0x37
165
+#define VKEY_8 0x38
166
+#define VKEY_9 0x39
167
+#define VKEY_A 0x41
168
+#define VKEY_B 0x42
169
+#define VKEY_C 0x43
170
+#define VKEY_D 0x44
171
+#define VKEY_E 0x45
172
+#define VKEY_F 0x46
173
+#define VKEY_G 0x47
174
+#define VKEY_H 0x48
175
+#define VKEY_I 0x49
176
+#define VKEY_J 0x4A
177
+#define VKEY_K 0x4B
178
+#define VKEY_L 0x4C
179
+#define VKEY_M 0x4D
180
+#define VKEY_N 0x4E
181
+#define VKEY_O 0x4F
182
+#define VKEY_P 0x50
183
+#define VKEY_Q 0x51
184
+#define VKEY_R 0x52
185
+#define VKEY_S 0x53
186
+#define VKEY_T 0x54
187
+#define VKEY_U 0x55
188
+#define VKEY_V 0x56
189
+#define VKEY_W 0x57
190
+#define VKEY_X 0x58
191
+#define VKEY_Y 0x59
192
+#define VKEY_Z 0x5A
193
+
194
+#define VKEY_LWIN 0x5B // Left Windows key (Microsoft Natural keyboard)
195
+
196
+#define VKEY_RWIN 0x5C // Right Windows key (Natural keyboard)
197
+
198
+#define VKEY_APPS 0x5D // Applications key (Natural keyboard)
199
+
200
+#define VKEY_SLEEP 0x5F // Computer Sleep key
201
+
202
+// Num pad keys
203
+#define VKEY_NUMPAD0 0x60
204
+#define VKEY_NUMPAD1 0x61
205
+#define VKEY_NUMPAD2 0x62
206
+#define VKEY_NUMPAD3 0x63
207
+#define VKEY_NUMPAD4 0x64
208
+#define VKEY_NUMPAD5 0x65
209
+#define VKEY_NUMPAD6 0x66
210
+#define VKEY_NUMPAD7 0x67
211
+#define VKEY_NUMPAD8 0x68
212
+#define VKEY_NUMPAD9 0x69
213
+#define VKEY_MULTIPLY 0x6A
214
+#define VKEY_ADD 0x6B
215
+#define VKEY_SEPARATOR 0x6C
216
+#define VKEY_SUBTRACT 0x6D
217
+#define VKEY_DECIMAL 0x6E
218
+#define VKEY_DIVIDE 0x6F
219
+
220
+#define VKEY_F1 0x70
221
+#define VKEY_F2 0x71
222
+#define VKEY_F3 0x72
223
+#define VKEY_F4 0x73
224
+#define VKEY_F5 0x74
225
+#define VKEY_F6 0x75
226
+#define VKEY_F7 0x76
227
+#define VKEY_F8 0x77
228
+#define VKEY_F9 0x78
229
+#define VKEY_F10 0x79
230
+#define VKEY_F11 0x7A
231
+#define VKEY_F12 0x7B
232
+#define VKEY_F13 0x7C
233
+#define VKEY_F14 0x7D
234
+#define VKEY_F15 0x7E
235
+#define VKEY_F16 0x7F
236
+#define VKEY_F17 0x80
237
+#define VKEY_F18 0x81
238
+#define VKEY_F19 0x82
239
+#define VKEY_F20 0x83
240
+#define VKEY_F21 0x84
241
+#define VKEY_F22 0x85
242
+#define VKEY_F23 0x86
243
+#define VKEY_F24 0x87
244
+
245
+#define VKEY_NUMLOCK 0x90
246
+#define VKEY_SCROLL 0x91
247
+#define VKEY_LSHIFT 0xA0
248
+#define VKEY_RSHIFT 0xA1
249
+#define VKEY_LCONTROL 0xA2
250
+#define VKEY_RCONTROL 0xA3
251
+#define VKEY_LMENU 0xA4
252
+#define VKEY_RMENU 0xA5
253
+
254
+#define VKEY_BROWSER_BACK 0xA6 // Windows 2000/XP: Browser Back key
255
+#define VKEY_BROWSER_FORWARD 0xA7 // Windows 2000/XP: Browser Forward key
256
+#define VKEY_BROWSER_REFRESH 0xA8 // Windows 2000/XP: Browser Refresh key
257
+#define VKEY_BROWSER_STOP 0xA9 // Windows 2000/XP: Browser Stop key
258
+#define VKEY_BROWSER_SEARCH 0xAA // Windows 2000/XP: Browser Search key
259
+#define VKEY_BROWSER_FAVORITES 0xAB // Windows 2000/XP: Browser Favorites key
260
+#define VKEY_BROWSER_HOME 0xAC // Windows 2000/XP: Browser Start and Home key
261
+#define VKEY_VOLUME_MUTE 0xAD // Windows 2000/XP: Volume Mute key
262
+#define VKEY_VOLUME_DOWN 0xAE // Windows 2000/XP: Volume Down key
263
+#define VKEY_VOLUME_UP 0xAF // Windows 2000/XP: Volume Up key
264
+#define VKEY_MEDIA_NEXT_TRACK 0xB0 // Windows 2000/XP: Next Track key
265
+#define VKEY_MEDIA_PREV_TRACK 0xB1 // Windows 2000/XP: Previous Track key
266
+#define VKEY_MEDIA_STOP 0xB2 // Windows 2000/XP: Stop Media key
267
+#define VKEY_MEDIA_PLAY_PAUSE 0xB3 // Windows 2000/XP: Play/Pause Media key
268
+#define VKEY_MEDIA_LAUNCH_MAIL 0xB4 // Windows 2000/XP: Start Mail key
269
+#define VKEY_MEDIA_LAUNCH_MEDIA_SELECT 0xB5 // Windows 2000/XP: Select Media key
270
+#define VKEY_MEDIA_LAUNCH_APP1 \
271
+ 0xB6 // VKEY_LAUNCH_APP1 (B6) Windows 2000/XP: Start Application 1 key
272
+#define VKEY_MEDIA_LAUNCH_APP2 \
273
+ 0xB7 // VKEY_LAUNCH_APP2 (B7) Windows 2000/XP: Start Application 2 key
274
+
275
+// VKEY_OEM_1 (BA) Used for miscellaneous characters; it can vary by keyboard.
276
+// Windows 2000/XP: For the US standard keyboard, the ';:' key
277
+#define VKEY_OEM_1 0xBA
278
+
279
+// Windows 2000/XP: For any country/region, the '+' key
280
+#define VKEY_OEM_PLUS 0xBB
281
+
282
+// Windows 2000/XP: For any country/region, the ',' key
283
+#define VKEY_OEM_COMMA 0xBC
284
+
285
+// Windows 2000/XP: For any country/region, the '-' key
286
+#define VKEY_OEM_MINUS 0xBD
287
+
288
+// Windows 2000/XP: For any country/region, the '.' key
289
+#define VKEY_OEM_PERIOD 0xBE
290
+
291
+// VKEY_OEM_2 (BF) Used for miscellaneous characters; it can vary by keyboard.
292
+// Windows 2000/XP: For the US standard keyboard, the '/?' key
293
+#define VKEY_OEM_2 0xBF
294
+
295
+// VKEY_OEM_3 (C0) Used for miscellaneous characters; it can vary by keyboard.
296
+// Windows 2000/XP: For the US standard keyboard, the '`~' key
297
+#define VKEY_OEM_3 0xC0
298
+
299
+// VKEY_OEM_4 (DB) Used for miscellaneous characters; it can vary by keyboard.
300
+// Windows 2000/XP: For the US standard keyboard, the '[{' key
301
+#define VKEY_OEM_4 0xDB
302
+
303
+// VKEY_OEM_5 (DC) Used for miscellaneous characters; it can vary by keyboard.
304
+// Windows 2000/XP: For the US standard keyboard, the '\|' key
305
+#define VKEY_OEM_5 0xDC
306
+
307
+// VKEY_OEM_6 (DD) Used for miscellaneous characters; it can vary by keyboard.
308
+// Windows 2000/XP: For the US standard keyboard, the ']}' key
309
+#define VKEY_OEM_6 0xDD
310
+
311
+// VKEY_OEM_7 (DE) Used for miscellaneous characters; it can vary by keyboard.
312
+// Windows 2000/XP: For the US standard keyboard, the
313
+// 'single-quote/double-quote' key
314
+#define VKEY_OEM_7 0xDE
315
+
316
+// VKEY_OEM_8 (DF) Used for miscellaneous characters; it can vary by keyboard.
317
+#define VKEY_OEM_8 0xDF
318
+
319
+// VKEY_OEM_102 (E2) Windows 2000/XP: Either the angle bracket key or the
320
+// backslash key on the RT 102-key keyboard
321
+#define VKEY_OEM_102 0xE2
322
+
323
+#define VKEY_OEM_BACKTAB 0xF5
324
+#define VKEY_OEM_FJ_TOUROKU 0x94
325
+#define VKEY_OEM_FJ_MASSHOU 0x93
326
+
327
+// Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
328
+#define VKEY_PROCESSKEY 0xE5
329
+
330
+// Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes.
331
+// The VKEY_PACKET key is the low word of a 32-bit Virtual Key value used for
332
+// non-keyboard input methods. For more information, see Remark in
333
+// KEYBDINPUT,SendInput, WM_KEYDOWN, and WM_KEYUP
334
+#define VKEY_PACKET 0xE7
335
+
336
+#define VKEY_ATTN 0xF6 // Attn key
337
+#define VKEY_CRSEL 0xF7 // CrSel key
338
+#define VKEY_EXSEL 0xF8 // ExSel key
339
+#define VKEY_EREOF 0xF9 // Erase EOF key
340
+#define VKEY_PLAY 0xFA // Play key
341
+#define VKEY_ZOOM 0xFB // Zoom key
342
+
343
+#define VKEY_NONAME 0xFC // Reserved for future use
344
+
345
+#define VKEY_PA1 0xFD // VKEY_PA1 (FD) PA1 key
346
+
347
+#define VKEY_OEM_CLEAR 0xFE // Clear key
348
+
349
+#endif // VKEY_UNKNOWN
350
+
351
+/* ------------------------------------------------------------------------- */
352
+
353
+static uint32_t KeyboardCodeFromXKeysym(unsigned int keysym)
354
+{
355
+ switch (keysym) {
356
+ case XK_BackSpace:
357
+ return VKEY_BACK;
358
+ case XK_Delete:
359
+ case XK_KP_Delete:
360
+ return VKEY_DELETE;
361
+ case XK_Tab:
362
+ case XK_KP_Tab:
363
+ case XK_ISO_Left_Tab:
364
+ case XK_3270_BackTab:
365
+ return VKEY_TAB;
366
+ case XK_Linefeed:
367
+ case XK_Return:
368
+ case XK_KP_Enter:
369
+ case XK_ISO_Enter:
370
+ return VKEY_RETURN;
371
+ case XK_Clear:
372
+ case XK_KP_Begin: // NumPad 5 without Num Lock, for crosbug.com/29169.
373
+ return VKEY_CLEAR;
374
+ case XK_KP_Space:
375
+ case XK_space:
376
+ return VKEY_SPACE;
377
+ case XK_Home:
378
+ case XK_KP_Home:
379
+ return VKEY_HOME;
380
+ case XK_End:
381
+ case XK_KP_End:
382
+ return VKEY_END;
383
+ case XK_Page_Up:
384
+ case XK_KP_Page_Up: // aka XK_KP_Prior
385
+ return VKEY_PRIOR;
386
+ case XK_Page_Down:
387
+ case XK_KP_Page_Down: // aka XK_KP_Next
388
+ return VKEY_NEXT;
389
+ case XK_Left:
390
+ case XK_KP_Left:
391
+ return VKEY_LEFT;
392
+ case XK_Right:
393
+ case XK_KP_Right:
394
+ return VKEY_RIGHT;
395
+ case XK_Down:
396
+ case XK_KP_Down:
397
+ return VKEY_DOWN;
398
+ case XK_Up:
399
+ case XK_KP_Up:
400
+ return VKEY_UP;
401
+ case XK_Escape:
402
+ return VKEY_ESCAPE;
403
+ case XK_Kana_Lock:
404
+ case XK_Kana_Shift:
405
+ return VKEY_KANA;
406
+ case XK_Hangul:
407
+ return VKEY_HANGUL;
408
+ case XK_Hangul_Hanja:
409
+ return VKEY_HANJA;
410
+ case XK_Kanji:
411
+ return VKEY_KANJI;
412
+ case XK_Henkan:
413
+ return VKEY_CONVERT;
414
+ case XK_Muhenkan:
415
+ return VKEY_NONCONVERT;
416
+ case XK_A:
417
+ case XK_a:
418
+ return VKEY_A;
419
+ case XK_B:
420
+ case XK_b:
421
+ return VKEY_B;
422
+ case XK_C:
423
+ case XK_c:
424
+ return VKEY_C;
425
+ case XK_D:
426
+ case XK_d:
427
+ return VKEY_D;
428
+ case XK_E:
429
+ case XK_e:
430
+ return VKEY_E;
431
+ case XK_F:
432
+ case XK_f:
433
+ return VKEY_F;
434
+ case XK_G:
435
+ case XK_g:
436
+ return VKEY_G;
437
+ case XK_H:
438
+ case XK_h:
439
+ return VKEY_H;
440
+ case XK_I:
441
+ case XK_i:
442
+ return VKEY_I;
443
+ case XK_J:
444
+ case XK_j:
445
+ return VKEY_J;
446
+ case XK_K:
447
+ case XK_k:
448
+ return VKEY_K;
449
+ case XK_L:
450
+ case XK_l:
451
+ return VKEY_L;
452
+ case XK_M:
453
+ case XK_m:
454
+ return VKEY_M;
455
+ case XK_N:
456
+ case XK_n:
457
+ return VKEY_N;
458
+ case XK_O:
459
+ case XK_o:
460
+ return VKEY_O;
461
+ case XK_P:
462
+ case XK_p:
463
+ return VKEY_P;
464
+ case XK_Q:
465
+ case XK_q:
466
+ return VKEY_Q;
467
+ case XK_R:
468
+ case XK_r:
469
+ return VKEY_R;
470
+ case XK_S:
471
+ case XK_s:
472
+ return VKEY_S;
473
+ case XK_T:
474
+ case XK_t:
475
+ return VKEY_T;
476
+ case XK_U:
477
+ case XK_u:
478
+ return VKEY_U;
479
+ case XK_V:
480
+ case XK_v:
481
+ return VKEY_V;
482
+ case XK_W:
483
+ case XK_w:
484
+ return VKEY_W;
485
+ case XK_X:
486
+ case XK_x:
487
+ return VKEY_X;
488
+ case XK_Y:
489
+ case XK_y:
490
+ return VKEY_Y;
491
+ case XK_Z:
492
+ case XK_z:
493
+ return VKEY_Z;
494
+
495
+ case XK_0:
496
+ case XK_1:
497
+ case XK_2:
498
+ case XK_3:
499
+ case XK_4:
500
+ case XK_5:
501
+ case XK_6:
502
+ case XK_7:
503
+ case XK_8:
504
+ case XK_9:
505
+ return static_cast<unsigned int>(VKEY_0 + (keysym - XK_0));
506
+
507
+ case XK_parenright:
508
+ return VKEY_0;
509
+ case XK_exclam:
510
+ return VKEY_1;
511
+ case XK_at:
512
+ return VKEY_2;
513
+ case XK_numbersign:
514
+ return VKEY_3;
515
+ case XK_dollar:
516
+ return VKEY_4;
517
+ case XK_percent:
518
+ return VKEY_5;
519
+ case XK_asciicircum:
520
+ return VKEY_6;
521
+ case XK_ampersand:
522
+ return VKEY_7;
523
+ case XK_asterisk:
524
+ return VKEY_8;
525
+ case XK_parenleft:
526
+ return VKEY_9;
527
+
528
+ case XK_KP_0:
529
+ case XK_KP_1:
530
+ case XK_KP_2:
531
+ case XK_KP_3:
532
+ case XK_KP_4:
533
+ case XK_KP_5:
534
+ case XK_KP_6:
535
+ case XK_KP_7:
536
+ case XK_KP_8:
537
+ case XK_KP_9:
538
+ return static_cast<unsigned int>(VKEY_NUMPAD0 +
539
+ (keysym - XK_KP_0));
540
+
541
+ case XK_multiply:
542
+ case XK_KP_Multiply:
543
+ return VKEY_MULTIPLY;
544
+ case XK_KP_Add:
545
+ return VKEY_ADD;
546
+ case XK_KP_Separator:
547
+ return VKEY_SEPARATOR;
548
+ case XK_KP_Subtract:
549
+ return VKEY_SUBTRACT;
550
+ case XK_KP_Decimal:
551
+ return VKEY_DECIMAL;
552
+ case XK_KP_Divide:
553
+ return VKEY_DIVIDE;
554
+ case XK_KP_Equal:
555
+ case XK_equal:
556
+ case XK_plus:
557
+ return VKEY_OEM_PLUS;
558
+ case XK_comma:
559
+ case XK_less:
560
+ return VKEY_OEM_COMMA;
561
+ case XK_minus:
562
+ case XK_underscore:
563
+ return VKEY_OEM_MINUS;
564
+ case XK_greater:
565
+ case XK_period:
566
+ return VKEY_OEM_PERIOD;
567
+ case XK_colon:
568
+ case XK_semicolon:
569
+ return VKEY_OEM_1;
570
+ case XK_question:
571
+ case XK_slash:
572
+ return VKEY_OEM_2;
573
+ case XK_asciitilde:
574
+ case XK_quoteleft:
575
+ return VKEY_OEM_3;
576
+ case XK_bracketleft:
577
+ case XK_braceleft:
578
+ return VKEY_OEM_4;
579
+ case XK_backslash:
580
+ case XK_bar:
581
+ return VKEY_OEM_5;
582
+ case XK_bracketright:
583
+ case XK_braceright:
584
+ return VKEY_OEM_6;
585
+ case XK_quoteright:
586
+ case XK_quotedbl:
587
+ return VKEY_OEM_7;
588
+ case XK_ISO_Level5_Shift:
589
+ return VKEY_OEM_8;
590
+ case XK_Shift_L:
591
+ case XK_Shift_R:
592
+ return VKEY_SHIFT;
593
+ case XK_Control_L:
594
+ case XK_Control_R:
595
+ return VKEY_CONTROL;
596
+ case XK_Meta_L:
597
+ case XK_Meta_R:
598
+ case XK_Alt_L:
599
+ case XK_Alt_R:
600
+ return VKEY_MENU;
601
+ case XK_ISO_Level3_Shift:
602
+ return VKEY_ALTGR;
603
+ case XK_Multi_key:
604
+ return VKEY_COMPOSE;
605
+ case XK_Pause:
606
+ return VKEY_PAUSE;
607
+ case XK_Caps_Lock:
608
+ return VKEY_CAPITAL;
609
+ case XK_Num_Lock:
610
+ return VKEY_NUMLOCK;
611
+ case XK_Scroll_Lock:
612
+ return VKEY_SCROLL;
613
+ case XK_Select:
614
+ return VKEY_SELECT;
615
+ case XK_Print:
616
+ return VKEY_PRINT;
617
+ case XK_Execute:
618
+ return VKEY_EXECUTE;
619
+ case XK_Insert:
620
+ case XK_KP_Insert:
621
+ return VKEY_INSERT;
622
+ case XK_Help:
623
+ return VKEY_HELP;
624
+ case XK_Super_L:
625
+ return VKEY_LWIN;
626
+ case XK_Super_R:
627
+ return VKEY_RWIN;
628
+ case XK_Menu:
629
+ return VKEY_APPS;
630
+ case XK_F1:
631
+ case XK_F2:
632
+ case XK_F3:
633
+ case XK_F4:
634
+ case XK_F5:
635
+ case XK_F6:
636
+ case XK_F7:
637
+ case XK_F8:
638
+ case XK_F9:
639
+ case XK_F10:
640
+ case XK_F11:
641
+ case XK_F12:
642
+ case XK_F13:
643
+ case XK_F14:
644
+ case XK_F15:
645
+ case XK_F16:
646
+ case XK_F17:
647
+ case XK_F18:
648
+ case XK_F19:
649
+ case XK_F20:
650
+ case XK_F21:
651
+ case XK_F22:
652
+ case XK_F23:
653
+ case XK_F24:
654
+ return static_cast<unsigned int>(VKEY_F1 + (keysym - XK_F1));
655
+ case XK_KP_F1:
656
+ case XK_KP_F2:
657
+ case XK_KP_F3:
658
+ case XK_KP_F4:
659
+ return static_cast<unsigned int>(VKEY_F1 + (keysym - XK_KP_F1));
660
+
661
+ case XK_guillemotleft:
662
+ case XK_guillemotright:
663
+ case XK_degree:
664
+ // In the case of canadian multilingual keyboard layout, VKEY_OEM_102
665
+ // is assigned to ugrave key.
666
+ case XK_ugrave:
667
+ case XK_Ugrave:
668
+ case XK_brokenbar:
669
+ return VKEY_OEM_102; // international backslash key in 102
670
+ // keyboard.
671
+
672
+ // When evdev is in use, /usr/share/X11/xkb/symbols/inet maps F13-18
673
+ // keys to the special XF86XK symbols to support Microsoft Ergonomic
674
+ // keyboards: https://bugs.freedesktop.org/show_bug.cgi?id=5783 In
675
+ // Chrome, we map these X key symbols back to F13-18 since we don't
676
+ // have VKEYs for these XF86XK symbols.
677
+ case XF86XK_Tools:
678
+ return VKEY_F13;
679
+ case XF86XK_Launch5:
680
+ return VKEY_F14;
681
+ case XF86XK_Launch6:
682
+ return VKEY_F15;
683
+ case XF86XK_Launch7:
684
+ return VKEY_F16;
685
+ case XF86XK_Launch8:
686
+ return VKEY_F17;
687
+ case XF86XK_Launch9:
688
+ return VKEY_F18;
689
+ case XF86XK_Refresh:
690
+ case XF86XK_History:
691
+ case XF86XK_OpenURL:
692
+ case XF86XK_AddFavorite:
693
+ case XF86XK_Go:
694
+ case XF86XK_ZoomIn:
695
+ case XF86XK_ZoomOut:
696
+ // ui::AcceleratorGtk tries to convert the XF86XK_ keysyms on
697
+ // Chrome startup. It's safe to return VKEY_UNKNOWN here since
698
+ // ui::AcceleratorGtk also checks a Gdk keysym.
699
+ // http://crbug.com/109843
700
+ return VKEY_UNKNOWN;
701
+ // For supporting multimedia buttons on a USB keyboard.
702
+ case XF86XK_Back:
703
+ return VKEY_BROWSER_BACK;
704
+ case XF86XK_Forward:
705
+ return VKEY_BROWSER_FORWARD;
706
+ case XF86XK_Reload:
707
+ return VKEY_BROWSER_REFRESH;
708
+ case XF86XK_Stop:
709
+ return VKEY_BROWSER_STOP;
710
+ case XF86XK_Search:
711
+ return VKEY_BROWSER_SEARCH;
712
+ case XF86XK_Favorites:
713
+ return VKEY_BROWSER_FAVORITES;
714
+ case XF86XK_HomePage:
715
+ return VKEY_BROWSER_HOME;
716
+ case XF86XK_AudioMute:
717
+ return VKEY_VOLUME_MUTE;
718
+ case XF86XK_AudioLowerVolume:
719
+ return VKEY_VOLUME_DOWN;
720
+ case XF86XK_AudioRaiseVolume:
721
+ return VKEY_VOLUME_UP;
722
+ case XF86XK_AudioNext:
723
+ return VKEY_MEDIA_NEXT_TRACK;
724
+ case XF86XK_AudioPrev:
725
+ return VKEY_MEDIA_PREV_TRACK;
726
+ case XF86XK_AudioStop:
727
+ return VKEY_MEDIA_STOP;
728
+ case XF86XK_AudioPlay:
729
+ return VKEY_MEDIA_PLAY_PAUSE;
730
+ case XF86XK_Mail:
731
+ return VKEY_MEDIA_LAUNCH_MAIL;
732
+ case XF86XK_LaunchA: // F3 on an Apple keyboard.
733
+ return VKEY_MEDIA_LAUNCH_APP1;
734
+ case XF86XK_LaunchB: // F4 on an Apple keyboard.
735
+ case XF86XK_Calculator:
736
+ return VKEY_MEDIA_LAUNCH_APP2;
737
+ case XF86XK_WLAN:
738
+ return VKEY_WLAN;
739
+ case XF86XK_PowerOff:
740
+ return VKEY_POWER;
741
+ case XF86XK_MonBrightnessDown:
742
+ return VKEY_BRIGHTNESS_DOWN;
743
+ case XF86XK_MonBrightnessUp:
744
+ return VKEY_BRIGHTNESS_UP;
745
+ case XF86XK_KbdBrightnessDown:
746
+ return VKEY_KBD_BRIGHTNESS_DOWN;
747
+ case XF86XK_KbdBrightnessUp:
748
+ return VKEY_KBD_BRIGHTNESS_UP;
749
+
750
+ // TODO(sad): some keycodes are still missing.
751
+ }
752
+ return VKEY_UNKNOWN;
753
+}
754
obs-studio-25.0.3.tar.xz/plugins/obs-browser/obs-browser-source.cpp -> obs-studio-25.0.4.tar.xz/plugins/obs-browser/obs-browser-source.cpp
Changed
54
1
2
#include <thread>
3
#include <mutex>
4
5
+#ifdef __linux__
6
+#include "linux-keyboard-helpers.hpp"
7
+#endif
8
+
9
#ifdef USE_QT_LOOP
10
#include <QEventLoop>
11
#include <QThread>
12
13
{
14
uint32_t modifiers = event->modifiers;
15
std::string text = event->text;
16
+#ifdef __linux__
17
+ uint32_t native_vkey = KeyboardCodeFromXKeysym(event->native_vkey);
18
+#else
19
uint32_t native_vkey = event->native_vkey;
20
+#endif
21
+ uint32_t native_scancode = event->native_scancode;
22
+ uint32_t native_modifiers = event->native_modifiers;
23
24
ExecuteOnBrowser(
25
[=](CefRefPtr<CefBrowser> cefBrowser) {
26
CefKeyEvent e;
27
e.windows_key_code = native_vkey;
28
- e.native_key_code = 0;
29
+ e.native_key_code = native_scancode;
30
31
e.type = key_up ? KEYEVENT_KEYUP : KEYEVENT_RAWKEYDOWN;
32
33
34
}
35
36
//e.native_key_code = native_vkey;
37
- e.modifiers = modifiers;
38
+ e.modifiers = native_modifiers;
39
40
cefBrowser->GetHost()->SendKeyEvent(e);
41
if (!text.empty() && !key_up) {
42
e.type = KEYEVENT_CHAR;
43
+#ifdef __linux__
44
+ e.windows_key_code =
45
+ KeyboardCodeFromXKeysym(e.character);
46
+#else
47
e.windows_key_code = e.character;
48
- e.native_key_code = native_vkey;
49
+#endif
50
+ e.native_key_code = native_scancode;
51
cefBrowser->GetHost()->SendKeyEvent(e);
52
}
53
},
54
obs-studio-25.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c -> obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c
Changed
13
1
2
#ifdef _WIN32
3
if (get_win_ver_int() > 0x0601) {
4
jim_nvenc_load();
5
+ } else {
6
+ // if on Win 7, new nvenc isn't available so there's
7
+ // no nvenc encoder for the user to select, expose
8
+ // the old encoder directly
9
+ nvenc_encoder_info.caps &= ~OBS_ENCODER_CAP_INTERNAL;
10
}
11
#endif
12
obs_register_encoder(&nvenc_encoder_info);
13
obs-studio-25.0.3.tar.xz/plugins/obs-qsv11/QSV_Encoder_Internal.cpp -> obs-studio-25.0.4.tar.xz/plugins/obs-qsv11/QSV_Encoder_Internal.cpp
Changed
9
1
2
break;
3
case MFX_RATECONTROL_LA_ICQ:
4
m_mfxEncParams.mfx.ICQQuality = pParams->nICQQuality;
5
+ break;
6
case MFX_RATECONTROL_LA_HRD:
7
m_mfxEncParams.mfx.TargetKbps = pParams->nTargetBitRate;
8
m_mfxEncParams.mfx.MaxKbps = pParams->nTargetBitRate;
9
obs-studio-25.0.3.tar.xz/plugins/win-capture/graphics-hook-ver.h -> obs-studio-25.0.4.tar.xz/plugins/win-capture/graphics-hook-ver.h
Changed
10
1
2
3
#define HOOK_VER_MAJOR 1
4
#define HOOK_VER_MINOR 1
5
-#define HOOK_VER_PATCH 3
6
+#define HOOK_VER_PATCH 4
7
8
#define STRINGIFY(s) #s
9
#define MAKE_VERSION_NAME(major, minor, patch) \
10
obs-studio-25.0.3.tar.xz/plugins/win-capture/graphics-hook/vulkan-capture.c -> obs-studio-25.0.4.tar.xz/plugins/win-capture/graphics-hook/vulkan-capture.c
Changed
106
1
2
}
3
4
static VkResult VKAPI OBS_CreateDevice(VkPhysicalDevice phy_device,
5
- const VkDeviceCreateInfo *cinfo,
6
+ const VkDeviceCreateInfo *info,
7
const VkAllocationCallbacks *ac,
8
VkDevice *p_device)
9
{
10
- VkDeviceCreateInfo info = *cinfo;
11
struct vk_inst_data *idata = get_inst_data(phy_device);
12
struct vk_inst_funcs *ifuncs = &idata->funcs;
13
struct vk_data *data = NULL;
14
15
VkResult ret = VK_ERROR_INITIALIZATION_FAILED;
16
17
- VkLayerDeviceCreateInfo *ldci = (void *)info.pNext;
18
+ VkLayerDeviceCreateInfo *ldci = (void *)info->pNext;
19
20
/* -------------------------------------------------------- */
21
/* step through chain until we get to the link info */
22
23
PFN_vkCreateDevice createFunc =
24
(PFN_vkCreateDevice)gipa(VK_NULL_HANDLE, "vkCreateDevice");
25
26
- ret = createFunc(phy_device, idata->valid ? &info : cinfo, ac,
27
- p_device);
28
+ ret = createFunc(phy_device, info, ac, p_device);
29
if (ret != VK_SUCCESS) {
30
goto fail;
31
}
32
33
if (funcs_not_found) {
34
goto fail;
35
}
36
+
37
if (!idata->valid) {
38
flog("instance not valid");
39
goto fail;
40
41
if (!data)
42
return;
43
44
- for (uint32_t fam_idx = 0; fam_idx < _countof(data->cmd_pools);
45
- fam_idx++) {
46
- struct vk_cmd_pool_data *pool_data = &data->cmd_pools[fam_idx];
47
- if (pool_data->cmd_pool != VK_NULL_HANDLE) {
48
- vk_shtex_destroy_cmd_pool_objects(data, pool_data);
49
+ if (data->valid) {
50
+ for (uint32_t fam_idx = 0; fam_idx < _countof(data->cmd_pools);
51
+ fam_idx++) {
52
+ struct vk_cmd_pool_data *pool_data =
53
+ &data->cmd_pools[fam_idx];
54
+ if (pool_data->cmd_pool != VK_NULL_HANDLE) {
55
+ vk_shtex_destroy_cmd_pool_objects(data,
56
+ pool_data);
57
+ }
58
}
59
}
60
61
62
const VkAllocationCallbacks *ac, VkSwapchainKHR *p_sc)
63
{
64
struct vk_data *data = get_device_data(device);
65
- struct vk_device_funcs *funcs = &data->funcs;
66
67
VkSwapchainCreateInfoKHR info = *cinfo;
68
- info.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
69
+ if (data->valid)
70
+ info.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
71
72
+ struct vk_device_funcs *funcs = &data->funcs;
73
VkResult res = funcs->CreateSwapchainKHR(device, &info, ac, p_sc);
74
debug_res("CreateSwapchainKHR", res);
75
- if (res != VK_SUCCESS)
76
+ if ((res != VK_SUCCESS) || !data->valid)
77
return res;
78
+
79
VkSwapchainKHR sc = *p_sc;
80
81
uint32_t count = 0;
82
83
struct vk_data *data = get_device_data(device);
84
struct vk_device_funcs *funcs = &data->funcs;
85
86
- struct vk_swap_data *swap = get_swap_data(data, sc);
87
- if (swap) {
88
- if (data->cur_swap == swap) {
89
- vk_shtex_free(data);
90
+ if (data->valid) {
91
+ struct vk_swap_data *swap = get_swap_data(data, sc);
92
+ if (swap) {
93
+ if (data->cur_swap == swap) {
94
+ vk_shtex_free(data);
95
+ }
96
+
97
+ swap->sc = VK_NULL_HANDLE;
98
+ swap->hwnd = NULL;
99
}
100
-
101
- swap->sc = VK_NULL_HANDLE;
102
- swap->hwnd = NULL;
103
}
104
105
funcs->DestroySwapchainKHR(device, sc, ac);
106