void xsettings_manager_destroy (XSettingsManager *manager) { XDestroyWindow (manager->display, manager->window); xsettings_list_free (manager->settings); free (manager); }
void XSettingsClient::clear(void) { if(!client_data) return; xsettings_list_free(client_data->settings); delete client_data; client_data = NULL; }
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; }
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); }