Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Obs Studio
提交
ebbe856d
O
Obs Studio
项目概览
小白菜888
/
Obs Studio
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Obs Studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ebbe856d
编写于
4月 05, 2020
作者:
D
David Bieber
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mac-capture: Only find window by window id when owner name and pid match
上级
239cad00
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
2 deletion
+38
-2
plugins/mac-capture/window-utils.h
plugins/mac-capture/window-utils.h
+1
-0
plugins/mac-capture/window-utils.m
plugins/mac-capture/window-utils.m
+37
-2
未找到文件。
plugins/mac-capture/window-utils.h
浏览文件 @
ebbe856d
...
...
@@ -6,6 +6,7 @@
struct
cocoa_window
{
CGWindowID
window_id
;
NSNumber
*
owner_pid
;
pthread_mutex_t
name_lock
;
NSString
*
owner_name
;
...
...
plugins/mac-capture/window-utils.m
浏览文件 @
ebbe856d
...
...
@@ -60,8 +60,10 @@ bool find_window(cocoa_window_t cw, obs_data_t *settings, bool force)
NSNumber
*
window_id
=
(
NSNumber
*
)
dict
[
WINDOW_NUMBER
];
cw
->
window_id
=
window_id
.
intValue
;
cw
->
owner_pid
=
(
NSNumber
*
)
dict
[
OWNER_PID
];
obs_data_set_int
(
settings
,
"window"
,
cw
->
window_id
);
obs_data_set_int
(
settings
,
"owner_pid"
,
cw
->
owner_pid
.
intValue
);
return
true
;
}
...
...
@@ -76,10 +78,43 @@ void init_window(cocoa_window_t cw, obs_data_t *settings)
cw
->
owner_name
=
@
(
obs_data_get_string
(
settings
,
"owner_name"
));
cw
->
window_name
=
@
(
obs_data_get_string
(
settings
,
"window_name"
));
cw
->
window_id
=
obs_data_get_int
(
settings
,
"window"
);
[
cw
->
owner_name
retain
];
[
cw
->
window_name
retain
];
find_window
(
cw
,
settings
,
true
);
// Find initial window.
pthread_mutex_lock
(
&
cw
->
name_lock
);
if
(
!
cw
->
window_name
.
length
&&
!
cw
->
owner_name
.
length
)
goto
invalid_name
;
NSNumber
*
owner_pid
=
@
(
obs_data_get_int
(
settings
,
"owner_pid"
));
NSNumber
*
window_id
=
@
(
obs_data_get_int
(
settings
,
"window"
));
for
(
NSDictionary
*
dict
in
enumerate_windows
())
{
bool
owner_names_match
=
[
cw
->
owner_name
isEqualToString
:
dict
[
OWNER_NAME
]];
bool
ids_match
=
[
owner_pid
isEqualToNumber
:
dict
[
OWNER_PID
]]
&&
[
window_id
isEqualToNumber
:
dict
[
WINDOW_NUMBER
]];
bool
window_names_match
=
[
cw
->
window_name
isEqualToString
:
dict
[
WINDOW_NAME
]];
if
(
owner_names_match
&&
(
ids_match
||
window_names_match
))
{
pthread_mutex_unlock
(
&
cw
->
name_lock
);
NSNumber
*
window_id
=
(
NSNumber
*
)
dict
[
WINDOW_NUMBER
];
cw
->
window_id
=
window_id
.
intValue
;
cw
->
owner_pid
=
(
NSNumber
*
)
dict
[
OWNER_PID
];
obs_data_set_int
(
settings
,
"window"
,
cw
->
window_id
);
obs_data_set_int
(
settings
,
"owner_pid"
,
cw
->
owner_pid
.
intValue
);
return
;
}
}
invalid_name:
pthread_mutex_unlock
(
&
cw
->
name_lock
);
return
;
}
void
destroy_window
(
cocoa_window_t
cw
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录