Changes of Revision 77

obs-studio.changes Changed
x
 
1
@@ -1,4 +1,24 @@
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
@@ -1,5 +1,5 @@
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
@@ -1,7 +1,7 @@
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
@@ -1,6 +1,6 @@
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
@@ -958,6 +958,12 @@
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
@@ -298,15 +298,8 @@
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
@@ -336,11 +329,8 @@
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
@@ -1694,7 +1694,7 @@
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
@@ -1728,7 +1728,7 @@
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
@@ -7482,7 +7482,7 @@
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
@@ -92,6 +92,9 @@
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
@@ -121,8 +124,6 @@
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
@@ -112,6 +112,9 @@
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
@@ -143,8 +146,6 @@
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
@@ -57,9 +57,9 @@
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
@@ -18,10 +18,14 @@
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
@@ -34,10 +38,14 @@
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
@@ -353,6 +361,10 @@
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
@@ -406,10 +418,13 @@
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
@@ -175,6 +175,8 @@
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
@@ -186,6 +188,16 @@
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
@@ -239,6 +251,7 @@
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
@@ -1749,6 +1762,14 @@
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
@@ -1758,6 +1779,11 @@
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
@@ -41,7 +41,7 @@
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
@@ -60,6 +60,9 @@
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
@@ -31,6 +31,16 @@
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
201
 
1
@@ -0,0 +1,752 @@
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
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
@@ -28,6 +28,10 @@
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
@@ -294,13 +298,19 @@
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
@@ -311,13 +321,18 @@
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
@@ -240,6 +240,11 @@
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
@@ -240,6 +240,7 @@
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
@@ -13,7 +13,7 @@
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
@@ -1181,18 +1181,17 @@
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
@@ -1222,8 +1221,7 @@
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
@@ -1291,6 +1289,7 @@
33
    if (funcs_not_found) {
34
        goto fail;
35
    }
36
+
37
    if (!idata->valid) {
38
        flog("instance not valid");
39
        goto fail;
40
@@ -1320,11 +1319,15 @@
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
@@ -1339,15 +1342,17 @@
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
@@ -1379,14 +1384,16 @@
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