void
xsettings_manager_destroy (XSettingsManager *manager)
{
  XDestroyWindow (manager->display, manager->window);
  
  xsettings_list_free (manager->settings);
  free (manager);
}
Exemple #2
0
void XSettingsClient::clear(void) {
	if(!client_data)
		return;

	xsettings_list_free(client_data->settings);
	delete client_data;
	client_data = NULL;
}
Exemple #3
0
void XSettingsManager::clear(void) {
	if(!manager_data)
		return;

	XDestroyWindow(manager_data->display, manager_data->manager_win);
	manager_data->manager_win = None;

	xsettings_list_free(manager_data->settings);
	delete manager_data;
	manager_data = NULL;
}
Exemple #4
0
void XSettingsClient::read_settings(void) {
	E_ASSERT(client_data != NULL);

	Atom type;
	int format;
	unsigned long n_items, bytes_after;
	unsigned char *data;
	int result;

	int (*old_handler)(Display*, XErrorEvent*);

	XSettingsList* old_settings = client_data->settings;
	client_data->settings = NULL;

	if(client_data->manager_win) {
		old_handler = XSetErrorHandler(ignore_xerrors);

		result = XGetWindowProperty(client_data->display, client_data->manager_win, client_data->xsettings_atom,
				0, LONG_MAX, False, client_data->xsettings_atom, 
				&type, &format, &n_items, &bytes_after, (unsigned char**)&data);

		XSetErrorHandler(old_handler);

		if(result == Success && type != None) {
			if(type != client_data->xsettings_atom)
				E_WARNING(E_STRLOC ": Invalid type for XSETTINGS property\n");
			else if(format != 8)
				E_WARNING(E_STRLOC ": Invalid format for XSETTINGS property %d\n", format);
			else {
				// parse settings
				client_data->settings = xsettings_decode(data, n_items, &client_data->serial);
			}

			XFree(data);
		}
	}

	notify_changes(client_data, old_settings, settings_cb, settings_cb_data);
	xsettings_list_free(old_settings);
}