Merge branch 'multi'

This commit is contained in:
Boris Faure 2019-10-20 20:06:06 +02:00
commit e21be6619b
5 changed files with 533 additions and 425 deletions

View File

@ -1,6 +1,7 @@
#include "private.h"
#include <Ecore.h>
#include <Ecore_Con.h>
#include <Ecore_Ipc.h>
#include <Eet.h>
#include "ipc.h"
@ -92,6 +93,8 @@ ipc_init(void)
"background", background, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"name", name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"theme", theme, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"role", role, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
@ -128,6 +131,16 @@ ipc_init(void)
"hold", hold, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"nowm", nowm, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"xterm_256color", xterm_256color, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"active_links", active_links, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"video_mute", active_links, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"cursor_blink", active_links, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(new_inst_edd, Ipc_Instance,
"visual_bell", active_links, EET_T_INT);
}
Eina_Bool
@ -171,6 +184,19 @@ ipc_instance_new_func_set(void (*func) (Ipc_Instance *inst))
func_new_inst = func;
}
void
ipc_instance_conn_free(void)
{
char *hash = _ipc_hash_get();
char *address = ecore_con_local_path_new(EINA_FALSE,
hash,
0);
errno = 0;
unlink(address);
ERR("unlinking: '%s': %s", address, strerror(errno));
free(address);
}
Eina_Bool
ipc_instance_add(Ipc_Instance *inst)
{
@ -178,7 +204,7 @@ ipc_instance_add(Ipc_Instance *inst)
void *data;
char *hash = _ipc_hash_get();
Ecore_Ipc_Server *ipcsrv;
if (!hash) return EINA_FALSE;
data = eet_data_descriptor_encode(new_inst_edd, inst, &size);
if (!data)
@ -186,6 +212,7 @@ ipc_instance_add(Ipc_Instance *inst)
free(hash);
return EINA_FALSE;
}
ipcsrv = ecore_ipc_server_connect(ECORE_IPC_LOCAL_USER, hash, 0, NULL);
if (ipcsrv)
{
@ -196,6 +223,10 @@ ipc_instance_add(Ipc_Instance *inst)
ecore_ipc_server_del(ipcsrv);
return EINA_TRUE;
}
else
{
DBG("connect failed");
}
free(data);
free(hash);
return EINA_FALSE;

View File

@ -7,28 +7,33 @@ typedef struct _Ipc_Instance Ipc_Instance;
struct _Ipc_Instance
{
const char *cmd;
const char *cd;
const char *background;
const char *name;
const char *role;
const char *title;
const char *icon_name;
const char *font;
const char *startup_id;
const char *startup_split;
char *cmd;
char *cd;
char *background;
char *name;
char *theme;
char *role;
char *title;
char *icon_name;
char *font;
char *startup_id;
char *startup_split;
int x, y, w, h;
int pos;
int login_shell;
int fullscreen;
int iconic;
int borderless;
int override;
int maximized;
int hold;
int nowm;
int xterm_256color;
int active_links;
Eina_Bool pos;
Eina_Bool login_shell;
Eina_Bool fullscreen;
Eina_Bool iconic;
Eina_Bool borderless;
Eina_Bool override;
Eina_Bool maximized;
Eina_Bool hold;
Eina_Bool nowm;
Eina_Bool xterm_256color;
Eina_Bool video_mute;
Eina_Bool active_links;
Eina_Bool cursor_blink;
Eina_Bool visual_bell;
Config *config;
};
void ipc_init(void);
@ -36,5 +41,6 @@ void ipc_shutdown(void);
Eina_Bool ipc_serve(void);
void ipc_instance_new_func_set(void (*func) (Ipc_Instance *inst));
Eina_Bool ipc_instance_add(Ipc_Instance *inst);
void ipc_instance_conn_free(void);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1248,7 +1248,6 @@ media_add(Evas_Object *parent, const char *src, const Config *config, int mode,
if (!_smart) _smart_init();
obj = evas_object_smart_add(e, _smart);
sd = evas_object_smart_data_get(obj);
if (!sd) return obj;
sd->src = eina_stringshare_add(src);
sd->config = config;

View File

@ -3324,6 +3324,7 @@ _tabs_close(Term_Container *tc, Term_Container *child)
l = _tab_item_find(tabs, child);
item = l->data;
tabs->tabs = eina_list_remove_list(tabs->tabs, l);
next = eina_list_next(l);
if (!next)
@ -3331,7 +3332,6 @@ _tabs_close(Term_Container *tc, Term_Container *child)
next_item = next->data;
next_child = next_item->tc;
assert (next_child->type == TERM_CONTAINER_TYPE_SOLO);
tabs->tabs = eina_list_remove_list(tabs->tabs, l);
assert (child->type == TERM_CONTAINER_TYPE_SOLO);
solo = (Solo*)child;
@ -6060,11 +6060,11 @@ win_font_update(Term *term)
void
windows_free(void)
{
Eina_List *l, *l_next;
Win *wn;
while (wins)
EINA_LIST_FOREACH_SAFE(wins, l, l_next, wn)
{
wn = eina_list_data_get(wins);
win_free(wn);
}