本文整理汇总了C++中xcb_disconnect函数的典型用法代码示例。如果您正苦于以下问题:C++ xcb_disconnect函数的具体用法?C++ xcb_disconnect怎么用?C++ xcb_disconnect使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了xcb_disconnect函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PRESENTDestroy
void
PRESENTDestroy(Display *dpy, PRESENTpriv *present_priv)
{
PRESENTPixmapPriv *current = NULL;
pthread_mutex_lock(&present_priv->mutex_present);
PRESENTForceReleases(present_priv);
current = present_priv->first_present_priv;
while (current) {
PRESENTPixmapPriv *next = current->next;
PRESENTDestroyPixmapContent(dpy, current);
free(current);
current = next;
}
PRESENTFreeXcbQueue(present_priv);
xcb_disconnect(present_priv->xcb_connection);
xcb_disconnect(present_priv->xcb_connection_bis);
pthread_mutex_unlock(&present_priv->mutex_present);
pthread_mutex_destroy(&present_priv->mutex_present);
pthread_mutex_destroy(&present_priv->mutex_xcb_wait);
free(present_priv);
}
示例2: xcb_connect
void SimplicityApplication::initialize_x_connection(void)
{
int nScreenNum = 0;
m_pXConnection = xcb_connect(m_sDisplayName.c_str(), &nScreenNum);
if (check_xcb_connection(m_pXConnection))
{
xcb_disconnect(m_pXConnection);
m_bRunning = false;
return;
}
xcb_screen_iterator_t iter = xcb_setup_roots_iterator(xcb_get_setup(m_pXConnection));
for (int i = 0; i != nScreenNum; i++)
xcb_screen_next(&iter);
m_pRootScreen = iter.data;
if (m_pRootScreen == nullptr)
{
global_log_error << "Could not get the current screen. Exiting";
xcb_disconnect(m_pXConnection);
m_bRunning = false;
}
global_log_debug << "Root screen dimensions: "
<< m_pRootScreen->width_in_pixels
<< "x"
<< m_pRootScreen->height_in_pixels;
global_log_debug << "Root window: "
<< m_pRootScreen->root;
}
示例3: cursor_set
static void
cursor_set (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int cursor_id)
{
uint32_t values_list[3];
xcb_void_cookie_t cookie_font;
xcb_void_cookie_t cookie_gc;
xcb_generic_error_t *error;
xcb_font_t font;
xcb_cursor_t cursor;
xcb_gcontext_t gc;
uint32_t mask;
uint32_t value_list;
font = xcb_generate_id (c);
cookie_font = xcb_open_font_checked (c, font,
strlen ("cursor"),
"cursor");
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cursor = xcb_generate_id (c);
xcb_create_glyph_cursor (c, cursor, font, font,
cursor_id, cursor_id + 1,
0, 0, 0,
0, 0, 0);
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
values_list[0] = screen->black_pixel;
values_list[1] = screen->white_pixel;
values_list[2] = font;
cookie_gc = xcb_create_gc_checked (c, gc, window, mask, values_list);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
mask = XCB_CW_CURSOR;
value_list = cursor;
xcb_change_window_attributes (c, window, mask, &value_list);
xcb_free_cursor (c, cursor);
cookie_font = xcb_close_font_checked (c, font);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
}
示例4: main
int
main ()
{
xcb_connection_t* connection;
xcb_screen_t* screen;
xcb_window_t root_window;
xcb_alloc_color_reply_t *color_reply;
xcb_colormap_t colormap = { 0 };
uint32_t params[1];
uint16_t r,g,b;
connection = xcb_connect(NULL, NULL);
if (!connection) {
fprintf(stderr, "ERROR: can't connect to an X server\n");
return -1;
}
screen = xcb_setup_roots_iterator(xcb_get_setup(connection)).data;
if (!screen)
{
fprintf(stderr, "ERROR: can't setup a screen\n");
xcb_disconnect(connection);
return -1;
}
root_window = screen->root;
colormap = screen->default_colormap;
r = 60000, g = 20000, b = 20000;
color_reply = xcb_alloc_color_reply(connection,
xcb_alloc_color(connection, colormap, r, g, b), NULL);
if(!color_reply)
{
fprintf(stderr, "ERROR: can't alloc an color\n");
xcb_disconnect(connection);
return 0;
}
params[0] = color_reply->pixel;
// sets the root_window back_pixel to pixel(params)
xcb_change_window_attributes(connection, root_window, XCB_CW_BACK_PIXEL, params);
// free color resources
free(color_reply);
// waits all things are send??
xcb_flush(connection);
// xcb_destroy_window(connection, window);
xcb_disconnect(connection);
return 0;
}
示例5: create_source_surface
static cairo_surface_t *
create_source_surface (int size)
{
#if CAIRO_HAS_XCB_SURFACE
xcb_render_pictforminfo_t *render_format;
struct closure *data;
cairo_surface_t *surface;
xcb_screen_t *root;
xcb_void_cookie_t cookie;
void *formats;
data = xmalloc (sizeof (struct closure));
data->connection = xcb_connect (NULL, NULL);
render_format = find_depth (data->connection, 32, &formats);
if (render_format == NULL) {
xcb_disconnect (data->connection);
free (data);
return NULL;
}
root = xcb_setup_roots_iterator (xcb_get_setup (data->connection)).data;
data->pixmap = xcb_generate_id (data->connection);
cookie = xcb_create_pixmap_checked (data->connection, 32,
data->pixmap, root->root, size, size);
/* slow, but sure */
if (xcb_request_check (data->connection, cookie) != NULL) {
free (formats);
xcb_disconnect (data->connection);
free (data);
return NULL;
}
surface = cairo_xcb_surface_create_with_xrender_format (data->connection,
root,
data->pixmap,
render_format,
size, size);
free (formats);
data->device = cairo_device_reference (cairo_surface_get_device (surface));
cairo_surface_set_user_data (surface, &closure_key, data, cleanup);
return surface;
#else
return NULL;
#endif
}
示例6: gc_font_get
static xcb_gc_t
gc_font_get (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
const char *font_name)
{
uint32_t value_list[3];
xcb_void_cookie_t cookie_font;
xcb_void_cookie_t cookie_gc;
xcb_generic_error_t *error;
xcb_font_t font;
xcb_gcontext_t gc;
uint32_t mask;
font = xcb_generate_id (c);
cookie_font = xcb_open_font_checked (c, font,
strlen (font_name),
font_name);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
value_list[0] = screen->black_pixel;
value_list[1] = screen->white_pixel;
value_list[2] = font;
cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_font = xcb_close_font_checked (c, font);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
return gc;
}
示例7: randr_init
int
randr_init(randr_state_t *state)
{
/* Initialize state. */
state->screen_num = -1;
state->crtc_num = NULL;
state->crtc_num_count = 0;
state->crtc_count = 0;
state->crtcs = NULL;
state->preserve = 0;
xcb_generic_error_t *error;
/* Open X server connection */
state->conn = xcb_connect(NULL, &state->preferred_screen);
/* Query RandR version */
xcb_randr_query_version_cookie_t ver_cookie =
xcb_randr_query_version(state->conn, RANDR_VERSION_MAJOR,
RANDR_VERSION_MINOR);
xcb_randr_query_version_reply_t *ver_reply =
xcb_randr_query_version_reply(state->conn, ver_cookie, &error);
/* TODO What does it mean when both error and ver_reply is NULL?
Apparently, we have to check both to avoid seg faults. */
if (error || ver_reply == NULL) {
int ec = (error != 0) ? error->error_code : -1;
fprintf(stderr, _("`%s' returned error %d\n"),
"RANDR Query Version", ec);
xcb_disconnect(state->conn);
return -1;
}
if (ver_reply->major_version != RANDR_VERSION_MAJOR ||
ver_reply->minor_version < RANDR_VERSION_MINOR) {
fprintf(stderr, _("Unsupported RANDR version (%u.%u)\n"),
ver_reply->major_version, ver_reply->minor_version);
free(ver_reply);
xcb_disconnect(state->conn);
return -1;
}
free(ver_reply);
return 0;
}
示例8: XCloseDisplay
int
XCloseDisplay (
register Display *dpy)
{
register _XExtension *ext;
register int i;
if (!(dpy->flags & XlibDisplayClosing))
{
dpy->flags |= XlibDisplayClosing;
for (i = 0; i < dpy->nscreens; i++) {
register Screen *sp = &dpy->screens[i];
XFreeGC (dpy, sp->default_gc);
}
if (dpy->cursor_font != None) {
XUnloadFont (dpy, dpy->cursor_font);
}
XSync(dpy, 1); /* throw away pending events, catch errors */
/* call out to any extensions interested */
for (ext = dpy->ext_procs; ext; ext = ext->next) {
if (ext->close_display)
(*ext->close_display)(dpy, &ext->codes);
}
/* if the closes generated more protocol, sync them up */
if (dpy->request != dpy->last_request_read)
XSync(dpy, 1);
}
xcb_disconnect(dpy->xcb->connection);
_XFreeDisplayStructure (dpy);
return 0;
}
示例9: xshm_capture_stop
/**
* Stop the capture
*/
static void xshm_capture_stop(struct xshm_data *data)
{
obs_enter_graphics();
if (data->texture) {
gs_texture_destroy(data->texture);
data->texture = NULL;
}
if (data->cursor) {
xcb_xcursor_destroy(data->cursor);
data->cursor = NULL;
}
obs_leave_graphics();
if (data->xshm) {
xshm_xcb_detach(data->xshm);
data->xshm = NULL;
}
if (data->xcb) {
xcb_disconnect(data->xcb);
data->xcb = NULL;
}
if (data->server) {
bfree(data->server);
data->server = NULL;
}
}
示例10: ASSERT
void DisplayVkXcb::terminate()
{
ASSERT(mXcbConnection != nullptr);
xcb_disconnect(mXcbConnection);
mXcbConnection = nullptr;
DisplayVk::terminate();
}
示例11: exit_cleanup
/** Perform cleanup on normal exit */
static void
exit_cleanup(void)
{
debug("Cleaning resources up");
/* Destroy CM window, thus giving up _NET_WM_CM_Sn ownership */
if(globalconf.cm_window != XCB_NONE)
xcb_destroy_window(globalconf.connection, globalconf.cm_window);
/* Free resources related to the plugins */
plugin_unload_all();
/* Destroy the linked-list of windows which has to be done after
unloading the plugins as the plugins may use the windows list to
free memory */
window_list_cleanup();
/* Free resources related to the rendering backend which has to be
done after the windows list cleanup as the latter free the
rendering information associated with each window */
rendering_unload();
/* Free resources related to the keymaps */
xcb_key_symbols_free(globalconf.keysyms);
/* Free resources related to EWMH */
xcb_ewmh_connection_wipe(&globalconf.ewmh);
cfg_free(globalconf.cfg);
free(globalconf.rendering_dir);
free(globalconf.plugins_dir);
xcb_disconnect(globalconf.connection);
}
示例12: xcb_destroy_window
void v_window::_deInitOSWindow() {
xcb_destroy_window(_xcb_connection,_xcb_window);
xcb_disconnect(_xcb_connection);
_xcb_connection = nullptr;
_xcb_window = 0;
}
示例13: init
void init(void)
{
int scrno;
xcb_screen_iterator_t iter;
conn = xcb_connect(NULL, &scrno);
if (!conn)
{
fprintf(stderr, "can't connect to an X server\n");
exit(1);
}
iter = xcb_setup_roots_iterator(xcb_get_setup(conn));
for (int i = 0; i < scrno; ++i)
{
xcb_screen_next(&iter);
}
screen = iter.data;
if (!screen)
{
fprintf(stderr, "can't get the current screen\n");
xcb_disconnect(conn);
exit(1);
}
}
示例14: main
int main(void)
{
xcb_connection_t *conn;
xcb_screen_t *screen;
xcb_window_t win;
xcb_gcontext_t gcontext;
xcb_generic_event_t *event;
uint32_t mask;
uint32_t values[2];
/* open connection with the server */
conn = xcb_connect(NULL,NULL);
if (xcb_connection_has_error(conn)) {
printf("Cannot open display\n");
exit(1);
}
/* get the first screen */
screen = xcb_setup_roots_iterator( xcb_get_setup(conn) ).data;
/* create black graphics gcontext */
gcontext = xcb_generate_id(conn);
win = screen->root;
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
values[0] = screen->black_pixel;
values[1] = 0;
xcb_create_gc(conn, gcontext, win, mask, values);
/* create window */
win = xcb_generate_id(conn);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = screen->white_pixel;
values[1] = XCB_EVENT_MASK_EXPOSURE
| XCB_EVENT_MASK_KEY_PRESS
| XCB_EVENT_MASK_KEY_RELEASE;
xcb_create_window(conn, screen->root_depth, win, screen->root,
10, 10, 100, 100, 1,
XCB_WINDOW_CLASS_INPUT_OUTPUT, screen->root_visual,
mask, values);
/* map (show) the window */
xcb_map_window(conn, win);
xcb_flush(conn);
cterm_add_event_listener(XCB_KEY_PRESS, output_string);
cterm_add_event_listener(XCB_KEY_PRESS, close_window);
/* event loop */
while (!done) {
event = xcb_poll_for_event(conn);
if(event == NULL) continue;
cterm_handle_event(event);
free(event);
}
/* close connection to server */
xcb_disconnect(conn);
cterm_free_event_handlers();
return 0;
}
示例15: awesome_atexit
/** Call before exiting.
*/
void
awesome_atexit(bool restart)
{
int screen_nbr, nscreens;
if(globalconf.hooks.exit != LUA_REFNIL)
luaA_dofunction_from_registry(globalconf.L, globalconf.hooks.exit, 0, 0);
lua_pushboolean(globalconf.L, restart);
signal_object_emit(globalconf.L, &global_signals, "exit", 1);
a_dbus_cleanup();
/* do this only for real screen */
const xcb_setup_t *setup = xcb_get_setup(globalconf.connection);
nscreens = setup ? xcb_setup_roots_length(setup) : -1;
for(screen_nbr = 0;
screen_nbr < nscreens;
screen_nbr++)
systray_cleanup(0, screen_nbr); //FIXME: Clean physical screens
/* Close Lua */
lua_close(globalconf.L);
xcb_flush(globalconf.connection);
/* Disconnect *after* closing lua */
xcb_disconnect(globalconf.connection);
ev_default_destroy();
}