New upstream version 24.0.1+dfsg1

This commit is contained in:
Sebastian Ramacher 2019-09-22 23:19:10 +02:00
parent b14f9eae6d
commit 5a730d6ec3
842 changed files with 42245 additions and 33385 deletions

View file

@ -2,13 +2,12 @@
#include <util/platform.h>
#define WINDOW_NAME ((NSString*)kCGWindowName)
#define WINDOW_NUMBER ((NSString*)kCGWindowNumber)
#define OWNER_NAME ((NSString*)kCGWindowOwnerName)
#define OWNER_PID ((NSNumber*)kCGWindowOwnerPID)
#define WINDOW_NAME ((NSString *)kCGWindowName)
#define WINDOW_NUMBER ((NSString *)kCGWindowNumber)
#define OWNER_NAME ((NSString *)kCGWindowOwnerName)
#define OWNER_PID ((NSNumber *)kCGWindowOwnerPID)
static NSComparator win_info_cmp = ^(NSDictionary *o1, NSDictionary *o2)
{
static NSComparator win_info_cmp = ^(NSDictionary *o1, NSDictionary *o2) {
NSComparisonResult res = [o1[OWNER_NAME] compare:o2[OWNER_NAME]];
if (res != NSOrderedSame)
return res;
@ -26,9 +25,8 @@ static NSComparator win_info_cmp = ^(NSDictionary *o1, NSDictionary *o2)
NSArray *enumerate_windows(void)
{
NSArray *arr = (NSArray*)CGWindowListCopyWindowInfo(
kCGWindowListOptionOnScreenOnly,
kCGNullWindowID);
NSArray *arr = (NSArray *)CGWindowListCopyWindowInfo(
kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
[arr autorelease];
@ -60,8 +58,8 @@ bool find_window(cocoa_window_t cw, obs_data_t *settings, bool force)
pthread_mutex_unlock(&cw->name_lock);
NSNumber *window_id = (NSNumber*)dict[WINDOW_NUMBER];
cw->window_id = window_id.intValue;
NSNumber *window_id = (NSNumber *)dict[WINDOW_NUMBER];
cw->window_id = window_id.intValue;
obs_data_set_int(settings, "window", cw->window_id);
return true;
@ -76,9 +74,9 @@ void init_window(cocoa_window_t cw, obs_data_t *settings)
{
pthread_mutex_init(&cw->name_lock, NULL);
cw->owner_name = @(obs_data_get_string(settings, "owner_name"));
cw->owner_name = @(obs_data_get_string(settings, "owner_name"));
cw->window_name = @(obs_data_get_string(settings, "window_name"));
[cw->owner_name retain];
[cw->owner_name retain];
[cw->window_name retain];
find_window(cw, settings, true);
}
@ -86,22 +84,22 @@ void init_window(cocoa_window_t cw, obs_data_t *settings)
void destroy_window(cocoa_window_t cw)
{
pthread_mutex_destroy(&cw->name_lock);
[cw->owner_name release];
[cw->owner_name release];
[cw->window_name release];
}
void update_window(cocoa_window_t cw, obs_data_t *settings)
{
pthread_mutex_lock(&cw->name_lock);
[cw->owner_name release];
[cw->owner_name release];
[cw->window_name release];
cw->owner_name = @(obs_data_get_string(settings, "owner_name"));
cw->window_name = @(obs_data_get_string(settings, "window_name"));
[cw->owner_name retain];
cw->owner_name = @(obs_data_get_string(settings, "owner_name"));
cw->window_name = @(obs_data_get_string(settings, "window_name"));
[cw->owner_name retain];
[cw->window_name retain];
pthread_mutex_unlock(&cw->name_lock);
cw->window_id = obs_data_get_int(settings, "window");
cw->window_id = obs_data_get_int(settings, "window");
}
static inline const char *make_name(NSString *owner, NSString *name)
@ -116,7 +114,7 @@ static inline const char *make_name(NSString *owner, NSString *name)
static inline NSDictionary *find_window_dict(NSArray *arr, int window_id)
{
for (NSDictionary *dict in arr) {
NSNumber *wid = (NSNumber*)dict[WINDOW_NUMBER];
NSNumber *wid = (NSNumber *)dict[WINDOW_NUMBER];
if (wid.intValue == window_id)
return dict;
}
@ -125,12 +123,11 @@ static inline NSDictionary *find_window_dict(NSArray *arr, int window_id)
}
static inline bool window_changed_internal(obs_property_t *p,
obs_data_t *settings)
obs_data_t *settings)
{
int window_id = obs_data_get_int(settings, "window");
int window_id = obs_data_get_int(settings, "window");
NSString *window_owner = @(obs_data_get_string(settings, "owner_name"));
NSString *window_name =
@(obs_data_get_string(settings, "window_name"));
NSString *window_name = @(obs_data_get_string(settings, "window_name"));
NSDictionary *win_info = @{
OWNER_NAME: window_owner,
@ -147,39 +144,38 @@ static inline bool window_changed_internal(obs_property_t *p,
obs_property_list_clear(p);
for (NSDictionary *dict in arr) {
NSString *owner = (NSString*)dict[OWNER_NAME];
NSString *name = (NSString*)dict[WINDOW_NAME];
NSNumber *wid = (NSNumber*)dict[WINDOW_NUMBER];
NSString *owner = (NSString *)dict[OWNER_NAME];
NSString *name = (NSString *)dict[WINDOW_NAME];
NSNumber *wid = (NSNumber *)dict[WINDOW_NUMBER];
if (!window_added &&
win_info_cmp(win_info, dict) == NSOrderedAscending) {
win_info_cmp(win_info, dict) == NSOrderedAscending) {
window_added = true;
size_t idx = obs_property_list_add_int(p,
make_name(window_owner, window_name),
window_id);
size_t idx = obs_property_list_add_int(
p, make_name(window_owner, window_name),
window_id);
obs_property_list_item_disable(p, idx, true);
}
if (!show_empty_names && !name.length &&
window_id != wid.intValue)
window_id != wid.intValue)
continue;
obs_property_list_add_int(p, make_name(owner, name),
wid.intValue);
wid.intValue);
}
if (!window_added) {
size_t idx = obs_property_list_add_int(p,
make_name(window_owner, window_name),
window_id);
size_t idx = obs_property_list_add_int(
p, make_name(window_owner, window_name), window_id);
obs_property_list_item_disable(p, idx, true);
}
if (!window_found)
return true;
NSString *owner = (NSString*)cur[OWNER_NAME];
NSString *window = (NSString*)cur[WINDOW_NAME];
NSString *owner = (NSString *)cur[OWNER_NAME];
NSString *window = (NSString *)cur[WINDOW_NAME];
obs_data_set_string(settings, "owner_name", owner.UTF8String);
obs_data_set_string(settings, "window_name", window.UTF8String);
@ -188,7 +184,7 @@ static inline bool window_changed_internal(obs_property_t *p,
}
static bool window_changed(obs_properties_t *props, obs_property_t *p,
obs_data_t *settings)
obs_data_t *settings)
{
UNUSED_PARAMETER(props);
@ -198,12 +194,12 @@ static bool window_changed(obs_properties_t *props, obs_property_t *p,
}
static bool toggle_empty_names(obs_properties_t *props, obs_property_t *p,
obs_data_t *settings)
obs_data_t *settings)
{
UNUSED_PARAMETER(p);
return window_changed(props, obs_properties_get(props, "window"),
settings);
settings);
}
void window_defaults(obs_data_t *settings)
@ -214,20 +210,20 @@ void window_defaults(obs_data_t *settings)
void add_window_properties(obs_properties_t *props)
{
obs_property_t *window_list = obs_properties_add_list(props,
"window", obs_module_text("WindowUtils.Window"),
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
obs_property_t *window_list = obs_properties_add_list(
props, "window", obs_module_text("WindowUtils.Window"),
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
obs_property_set_modified_callback(window_list, window_changed);
obs_property_t *empty = obs_properties_add_bool(props,
"show_empty_names",
obs_module_text("WindowUtils.ShowEmptyNames"));
obs_property_t *empty = obs_properties_add_bool(
props, "show_empty_names",
obs_module_text("WindowUtils.ShowEmptyNames"));
obs_property_set_modified_callback(empty, toggle_empty_names);
}
void show_window_properties(obs_properties_t *props, bool show)
{
obs_property_set_visible(obs_properties_get(props, "window"), show);
obs_property_set_visible(
obs_properties_get(props, "show_empty_names"), show);
obs_property_set_visible(obs_properties_get(props, "show_empty_names"),
show);
}