2004-11-24 19:37:45 -08:00
|
|
|
#include "e.h"
|
|
|
|
|
2006-03-09 21:48:46 -08:00
|
|
|
#ifdef USE_IPC
|
2004-11-24 19:37:45 -08:00
|
|
|
/* local subsystem functions */
|
|
|
|
static int _e_ipc_cb_client_add(void *data, int type, void *event);
|
|
|
|
static int _e_ipc_cb_client_del(void *data, int type, void *event);
|
|
|
|
static int _e_ipc_cb_client_data(void *data, int type, void *event);
|
2005-05-12 07:46:28 -07:00
|
|
|
|
2004-11-24 19:37:45 -08:00
|
|
|
/* local subsystem globals */
|
2005-08-13 01:04:38 -07:00
|
|
|
static Ecore_Ipc_Server *_e_ipc_server = NULL;
|
2006-03-09 21:48:46 -08:00
|
|
|
#endif
|
2004-11-24 19:37:45 -08:00
|
|
|
|
|
|
|
/* externally accessible functions */
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI int
|
2004-11-24 19:37:45 -08:00
|
|
|
e_ipc_init(void)
|
|
|
|
{
|
2006-03-09 21:48:46 -08:00
|
|
|
#ifdef USE_IPC
|
2004-11-24 19:37:45 -08:00
|
|
|
char buf[1024];
|
|
|
|
char *disp;
|
|
|
|
|
|
|
|
disp = getenv("DISPLAY");
|
|
|
|
if (!disp) disp = ":0";
|
|
|
|
snprintf(buf, sizeof(buf), "enlightenment-(%s)", disp);
|
|
|
|
_e_ipc_server = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, buf, 0, NULL);
|
|
|
|
if (!_e_ipc_server) return 0;
|
|
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD, _e_ipc_cb_client_add, NULL);
|
|
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL, _e_ipc_cb_client_del, NULL);
|
|
|
|
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA, _e_ipc_cb_client_data, NULL);
|
2005-05-12 07:46:28 -07:00
|
|
|
|
|
|
|
e_ipc_codec_init();
|
2006-03-09 21:48:46 -08:00
|
|
|
#endif
|
2004-11-24 19:37:45 -08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2004-11-24 19:37:45 -08:00
|
|
|
e_ipc_shutdown(void)
|
|
|
|
{
|
2006-03-09 21:48:46 -08:00
|
|
|
#ifdef USE_IPC
|
2005-05-12 07:46:28 -07:00
|
|
|
e_ipc_codec_shutdown();
|
2004-11-24 19:37:45 -08:00
|
|
|
if (_e_ipc_server)
|
|
|
|
{
|
|
|
|
ecore_ipc_server_del(_e_ipc_server);
|
|
|
|
_e_ipc_server = NULL;
|
|
|
|
}
|
2006-03-09 21:48:46 -08:00
|
|
|
#endif
|
2004-11-24 19:37:45 -08:00
|
|
|
}
|
|
|
|
|
2006-03-09 21:48:46 -08:00
|
|
|
#ifdef USE_IPC
|
2004-11-24 19:37:45 -08:00
|
|
|
/* local subsystem globals */
|
|
|
|
static int
|
2005-04-12 23:03:50 -07:00
|
|
|
_e_ipc_cb_client_add(void *data __UNUSED__, int type __UNUSED__, void *event)
|
2004-11-24 19:37:45 -08:00
|
|
|
{
|
|
|
|
Ecore_Ipc_Event_Client_Add *e;
|
|
|
|
|
|
|
|
e = event;
|
|
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2005-04-12 23:03:50 -07:00
|
|
|
_e_ipc_cb_client_del(void *data __UNUSED__, int type __UNUSED__, void *event)
|
2004-11-24 19:37:45 -08:00
|
|
|
{
|
|
|
|
Ecore_Ipc_Event_Client_Del *e;
|
|
|
|
|
|
|
|
e = event;
|
|
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
|
|
|
/* delete client sruct */
|
|
|
|
ecore_ipc_client_del(e->client);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2005-04-12 23:03:50 -07:00
|
|
|
_e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event)
|
2004-11-24 19:37:45 -08:00
|
|
|
{
|
|
|
|
Ecore_Ipc_Event_Client_Data *e;
|
|
|
|
|
|
|
|
e = event;
|
|
|
|
if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1;
|
2004-11-26 04:20:38 -08:00
|
|
|
switch (e->minor)
|
|
|
|
{
|
2005-05-30 20:01:53 -07:00
|
|
|
#define TYPE E_WM_IN
|
|
|
|
#include "e_ipc_handlers.h"
|
|
|
|
#undef TYPE
|
2004-11-26 04:20:38 -08:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2004-11-24 19:37:45 -08:00
|
|
|
return 1;
|
|
|
|
}
|
2006-03-11 08:18:27 -08:00
|
|
|
#endif
|