Modes are no longer loaded on their own thread. It's not really needed, breaks drun mode with images, and is probably confusing for 3rd-party mode developers.
This commit is contained in:
parent
a167dcc42e
commit
8796993fb6
@ -52,6 +52,7 @@ void wofi_dmenu_init(struct mode* this, struct map* config) {
|
|||||||
|
|
||||||
struct map* entry_map = map_init();
|
struct map* entry_map = map_init();
|
||||||
|
|
||||||
|
if(!isatty(STDIN_FILENO)) {
|
||||||
char* line = NULL;
|
char* line = NULL;
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
while(getdelim(&line, &size, separator[0], stdin) != -1) {
|
while(getdelim(&line, &size, separator[0], stdin) != -1) {
|
||||||
@ -65,6 +66,7 @@ void wofi_dmenu_init(struct mode* this, struct map* config) {
|
|||||||
map_put(entry_map, line, "true");
|
map_put(entry_map, line, "true");
|
||||||
}
|
}
|
||||||
free(line);
|
free(line);
|
||||||
|
}
|
||||||
|
|
||||||
if(!print_line_num) {
|
if(!print_line_num) {
|
||||||
struct wl_list* cache = wofi_read_cache(mode);
|
struct wl_list* cache = wofi_read_cache(mode);
|
||||||
|
39
src/wofi.c
39
src/wofi.c
@ -1235,27 +1235,6 @@ static struct mode* add_mode(char* _mode) {
|
|||||||
return mode_ptr;
|
return mode_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* start_thread(void* data) {
|
|
||||||
char* mode = data;
|
|
||||||
|
|
||||||
struct wl_list* modes = malloc(sizeof(struct wl_list));
|
|
||||||
wl_list_init(modes);
|
|
||||||
|
|
||||||
if(strchr(mode, ',') != NULL) {
|
|
||||||
char* save_ptr;
|
|
||||||
char* str = strtok_r(mode, ",", &save_ptr);
|
|
||||||
do {
|
|
||||||
struct mode* mode_ptr = add_mode(str);
|
|
||||||
wl_list_insert(modes, &mode_ptr->link);
|
|
||||||
} while((str = strtok_r(NULL, ",", &save_ptr)) != NULL);
|
|
||||||
} else {
|
|
||||||
struct mode* mode_ptr = add_mode(mode);
|
|
||||||
wl_list_insert(modes, &mode_ptr->link);
|
|
||||||
}
|
|
||||||
gdk_threads_add_idle(insert_all_widgets, modes);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parse_mods(char** key, char** mod) {
|
static void parse_mods(char** key, char** mod) {
|
||||||
char* hyphen = strchr(*key, '-');
|
char* hyphen = strchr(*key, '-');
|
||||||
if(hyphen != NULL) {
|
if(hyphen != NULL) {
|
||||||
@ -1509,8 +1488,22 @@ void wofi_init(struct map* _config) {
|
|||||||
gdk_threads_add_timeout(70, do_percent_size, geo_str);
|
gdk_threads_add_timeout(70, do_percent_size, geo_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_t thread;
|
struct wl_list* modes = malloc(sizeof(struct wl_list));
|
||||||
pthread_create(&thread, NULL, start_thread, mode);
|
wl_list_init(modes);
|
||||||
|
|
||||||
|
if(strchr(mode, ',') != NULL) {
|
||||||
|
char* save_ptr;
|
||||||
|
char* str = strtok_r(mode, ",", &save_ptr);
|
||||||
|
do {
|
||||||
|
struct mode* mode_ptr = add_mode(str);
|
||||||
|
wl_list_insert(modes, &mode_ptr->link);
|
||||||
|
} while((str = strtok_r(NULL, ",", &save_ptr)) != NULL);
|
||||||
|
} else {
|
||||||
|
struct mode* mode_ptr = add_mode(mode);
|
||||||
|
wl_list_insert(modes, &mode_ptr->link);
|
||||||
|
}
|
||||||
|
gdk_threads_add_idle(insert_all_widgets, modes);
|
||||||
|
|
||||||
gtk_window_set_title(GTK_WINDOW(window), prompt);
|
gtk_window_set_title(GTK_WINDOW(window), prompt);
|
||||||
gtk_widget_show_all(window);
|
gtk_widget_show_all(window);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user