static void collabclient_remakeSockets( cloneclient_t *cc ) { cc->snapshot = zsocket_new (cc->ctx, ZMQ_DEALER); zsocket_connect (cc->snapshot, collabclient_makeAddressString( cc->address, cc->port + socket_offset_snapshot)); cc->subscriber = zsocket_new (cc->ctx, ZMQ_SUB); zsocket_set_subscribe (cc->subscriber, ""); zsocket_connect (cc->subscriber, collabclient_makeAddressString( cc->address, cc->port + socket_offset_subscriber)); zsocket_set_subscribe (cc->subscriber, SUBTREE); cc->publisher = zsocket_new (cc->ctx, ZMQ_PUSH); zsocket_connect (cc->publisher, collabclient_makeAddressString( cc->address, cc->port + socket_offset_publisher)); int fd = 0; size_t fdsz = sizeof(fd); int rc = zmq_getsockopt( cc->subscriber, ZMQ_FD, &fd, &fdsz ); printf("subscriber rc:%d fd:%d\n", rc, fd ); GDrawAddReadFD( 0, fd, cc, zeromq_subscriber_fd_callback ); }
static PyObject *PyFFFont_addGtkWindowToMainEventLoop(PyFF_Font *self, PyObject *args) { PyObject *result = NULL; PyObject *temp; int v = 0; if ( !PyArg_ParseTuple( args, "i", &v )) return( NULL ); gpointer gdkwindow = gdk_xid_table_lookup( v ); if( gdkwindow ) { Display* d = GDK_WINDOW_XDISPLAY(gdkwindow); int fd = XConnectionNumber(d); if( fd ) { gpointer udata = 0; GDrawAddReadFD( 0, fd, udata, GtkWindowToMainEventLoop_fd_callback ); } } /* Boilerplate to return "None" */ Py_INCREF(Py_None); result = Py_None; return result; }
static void python_ui_setup_callback( bool makefifo ) { #ifndef __MINGW32__ int fd = 0; int err = 0; char *userCacheDir, *sockPath; userCacheDir = getFontForgeUserDir(Cache); if ( userCacheDir==NULL ) { LogError("PythonUISetup: failed to discover user cache dir path"); return; } asprintf(&sockPath, "%s/python-socket", userCacheDir); free(userCacheDir); if( makefifo ) { err = mkfifo( sockPath, 0600 ); if ( err==-1 && errno!=EEXIST) { LogError("PythonUISetup: unable to mkfifo('%s'): errno %d\n", sockPath, errno); free(sockPath); return; } } fd = open( sockPath, O_RDONLY | O_NDELAY ); if ( fd==-1) { LogError("PythonUISetup: unable to open socket '%s': errno %d\n", sockPath, errno); free(sockPath); return; } free(sockPath); void* udata = 0; GDrawAddReadFD( 0, fd, udata, python_ui_fd_callback ); return; #endif }