Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Obs Studio
提交
8b1b6b1e
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,发现更多精彩内容 >>
未验证
提交
8b1b6b1e
编写于
4月 18, 2020
作者:
C
Colin Edwards
提交者:
GitHub
4月 18, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2656 from dbieber/z2020-04-05-mac-capture
mac-capture: Use window id to identify windows on MacOS
上级
55e29850
46979536
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
1 deletion
+40
-1
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
+39
-1
未找到文件。
plugins/mac-capture/window-utils.h
浏览文件 @
8b1b6b1e
...
...
@@ -6,6 +6,7 @@
struct
cocoa_window
{
CGWindowID
window_id
;
int
owner_pid
;
pthread_mutex_t
name_lock
;
NSString
*
owner_name
;
...
...
plugins/mac-capture/window-utils.m
浏览文件 @
8b1b6b1e
...
...
@@ -60,8 +60,11 @@ 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
;
NSNumber
*
owner_pid
=
(
NSNumber
*
)
dict
[
OWNER_PID
];
cw
->
owner_pid
=
owner_pid
.
intValue
;
obs_data_set_int
(
settings
,
"window"
,
cw
->
window_id
);
obs_data_set_int
(
settings
,
"owner_pid"
,
cw
->
owner_pid
);
return
true
;
}
...
...
@@ -78,7 +81,41 @@ void init_window(cocoa_window_t cw, obs_data_t *settings)
cw
->
window_name
=
@
(
obs_data_get_string
(
settings
,
"window_name"
));
[
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
;
NSNumber
*
owner_pid
=
(
NSNumber
*
)
dict
[
OWNER_PID
];
cw
->
owner_pid
=
owner_pid
.
intValue
;
obs_data_set_int
(
settings
,
"window"
,
cw
->
window_id
);
obs_data_set_int
(
settings
,
"owner_pid"
,
cw
->
owner_pid
);
return
;
}
}
invalid_name:
pthread_mutex_unlock
(
&
cw
->
name_lock
);
return
;
}
void
destroy_window
(
cocoa_window_t
cw
)
...
...
@@ -99,6 +136,7 @@ void update_window(cocoa_window_t cw, obs_data_t *settings)
[
cw
->
window_name
retain
];
pthread_mutex_unlock
(
&
cw
->
name_lock
);
cw
->
owner_pid
=
obs_data_get_int
(
settings
,
"owner_pid"
);
cw
->
window_id
=
obs_data_get_int
(
settings
,
"window"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录