static void *Run (void *);
static void Update (services_discovery_t *);
static void DelItem (void *);
+static void AddDesktopItem(services_discovery_t *);
static int vlc_sd_probe_Open (vlc_object_t *obj)
{
vlc_probe_t *probe = (vlc_probe_t *)obj;
- char *display = var_CreateGetNonEmptyString (obj, "x11-display");
+ char *display = var_InheritString (obj, "x11-display");
xcb_connection_t *conn = xcb_connect (display, NULL);
free (display);
if (xcb_connection_has_error (conn))
sd->p_sys = p_sys;
/* Connect to X server */
- char *display = var_CreateGetNonEmptyString (obj, "x11-display");
+ char *display = var_InheritString (obj, "x11-display");
int snum;
xcb_connection_t *conn = xcb_connect (display, &snum);
free (display);
goto error;
}
+ /* Add a permanent item for the entire desktop */
+ AddDesktopItem (sd);
+
p_sys->root_window = scr->root;
xcb_change_window_attributes (conn, scr->root, XCB_CW_EVENT_MASK,
&(uint32_t) { XCB_EVENT_MASK_PROPERTY_CHANGE });
r = xcb_intern_atom_reply (conn, ncl, NULL);
if (r == NULL || r->atom == 0)
{
- dialog_Fatal (sd, _("Application list failure"),
- _("Your window manager does not support application list."));
- msg_Err (sd, "application list not support (_NET_CLIENT_LIST absent)");
- free (r);
- goto error;
+ dialog_Fatal (sd, _("Screen capture"),
+ _("Your window manager does not provide a list of applications."));
+ msg_Err (sd, "client list not supported (_NET_CLIENT_LIST absent)");
}
- p_sys->net_client_list = r->atom;
+ p_sys->net_client_list = r ? r->atom : 0;
free (r);
r = xcb_intern_atom_reply (conn, nwn, NULL);
if (r != NULL)
tdestroy (oldnodes, DelItem);
p_sys->nodes = newnodes;
}
+
+static void AddDesktopItem(services_discovery_t *sd)
+{
+ input_item_t *item;
+
+ item = input_item_NewWithType (VLC_OBJECT (sd), "screen://", _("Desktop"),
+ 0, NULL, 0, -1, ITEM_TYPE_CARD);
+ if (item == NULL)
+ return;
+
+ services_discovery_AddItem (sd, item, NULL);
+}