亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tkunixselect.c

?? linux系統下的音頻通信
?? C
?? 第 1 頁 / 共 3 頁
字號:
			    Tk_GetAtomName(tkwin, retrPtr->target),			    "\" not defined", (char *) NULL);		    retrPtr->result = TCL_ERROR;		    return;		}	    }	}	propInfo = NULL;	result = XGetWindowProperty(eventPtr->xselection.display,		eventPtr->xselection.requestor, retrPtr->property,		0, MAX_PROP_WORDS, False, (Atom) AnyPropertyType,		&type, &format, &numItems, &bytesAfter,		(unsigned char **) &propInfo);	if ((result != Success) || (type == None)) {	    return;	}	if (bytesAfter != 0) {	    Tcl_SetResult(retrPtr->interp, "selection property too large",		TCL_STATIC);	    retrPtr->result = TCL_ERROR;	    XFree(propInfo);	    return;	}	if ((type == XA_STRING) || (type == dispPtr->textAtom)		|| (type == dispPtr->compoundTextAtom)) {	    if (format != 8) {		sprintf(retrPtr->interp->result,		    "bad format for string selection: wanted \"8\", got \"%d\"",		    format);		retrPtr->result = TCL_ERROR;		return;	    }            interp = retrPtr->interp;            Tcl_Preserve((ClientData) interp);	    retrPtr->result = (*retrPtr->proc)(retrPtr->clientData,		    interp, propInfo);            Tcl_Release((ClientData) interp);	} else if (type == dispPtr->incrAtom) {	    /*	     * It's a !?#@!?!! INCR-style reception.  Arrange to receive	     * the selection in pieces, using the ICCCM protocol, then	     * hang around until either the selection is all here or a	     * timeout occurs.	     */	    retrPtr->idleTime = 0;	    Tk_CreateEventHandler(tkwin, PropertyChangeMask, SelRcvIncrProc,		    (ClientData) retrPtr);	    XDeleteProperty(Tk_Display(tkwin), Tk_WindowId(tkwin),		    retrPtr->property);	    while (retrPtr->result == -1) {		Tcl_DoOneEvent(0);	    }	    Tk_DeleteEventHandler(tkwin, PropertyChangeMask, SelRcvIncrProc,		    (ClientData) retrPtr);	} else {	    char *string;	    if (format != 32) {		sprintf(retrPtr->interp->result,		    "bad format for selection: wanted \"32\", got \"%d\"",		    format);		retrPtr->result = TCL_ERROR;		return;	    }	    string = SelCvtFromX((long *) propInfo, (int) numItems, type,		    (Tk_Window) winPtr);            interp = retrPtr->interp;            Tcl_Preserve((ClientData) interp);	    retrPtr->result = (*retrPtr->proc)(retrPtr->clientData,		    interp, string);            Tcl_Release((ClientData) interp);	    ckfree(string);	}	XFree(propInfo);	return;    }    /*     * Case #3: SelectionRequest events.  Call ConvertSelection to     * do the dirty work.     */    if (eventPtr->type == SelectionRequest) {	ConvertSelection(winPtr, &eventPtr->xselectionrequest);	return;    }}/* *---------------------------------------------------------------------- * * SelTimeoutProc -- * *	This procedure is invoked once every second while waiting for *	the selection to be returned.  After a while it gives up and *	aborts the selection retrieval. * * Results: *	None. * * Side effects: *	A new timer callback is created to call us again in another *	second, unless time has expired, in which case an error is *	recorded for the retrieval. * *---------------------------------------------------------------------- */static voidSelTimeoutProc(clientData)    ClientData clientData;		/* Information about retrieval					 * in progress. */{    register TkSelRetrievalInfo *retrPtr = (TkSelRetrievalInfo *) clientData;    /*     * Make sure that the retrieval is still in progress.  Then     * see how long it's been since any sort of response was received     * from the other side.     */    if (retrPtr->result != -1) {	return;    }    retrPtr->idleTime++;    if (retrPtr->idleTime >= 5) {	/*	 * Use a careful procedure to store the error message, because	 * the result could already be partially filled in with a partial	 * selection return.	 */	Tcl_SetResult(retrPtr->interp, "selection owner didn't respond",		TCL_STATIC);	retrPtr->result = TCL_ERROR;    } else {	retrPtr->timeout = Tcl_CreateTimerHandler(1000, SelTimeoutProc,	    (ClientData) retrPtr);    }}/* *---------------------------------------------------------------------- * * ConvertSelection -- * *	This procedure is invoked to handle SelectionRequest events. *	It responds to the requests, obeying the ICCCM protocols. * * Results: *	None. * * Side effects: *	Properties are created for the selection requestor, and a *	SelectionNotify event is generated for the selection *	requestor.  In the event of long selections, this procedure *	implements INCR-mode transfers, using the ICCCM protocol. * *---------------------------------------------------------------------- */static voidConvertSelection(winPtr, eventPtr)    TkWindow *winPtr;			/* Window that received the					 * conversion request;  may not be					 * selection's current owner, be we					 * set it to the current owner. */    register XSelectionRequestEvent *eventPtr;					/* Event describing request. */{    XSelectionEvent reply;		/* Used to notify requestor that					 * selection info is ready. */    int multiple;			/* Non-zero means a MULTIPLE request					 * is being handled. */    IncrInfo incr;			/* State of selection conversion. */    Atom singleInfo[2];			/* incr.multAtoms points here except					 * for multiple conversions. */    int i;    Tk_ErrorHandler errorHandler;    TkSelectionInfo *infoPtr;    TkSelInProgress ip;    errorHandler = Tk_CreateErrorHandler(eventPtr->display, -1, -1,-1,	    (int (*)()) NULL, (ClientData) NULL);    /*     * Initialize the reply event.     */    reply.type = SelectionNotify;    reply.serial = 0;    reply.send_event = True;    reply.display = eventPtr->display;    reply.requestor = eventPtr->requestor;    reply.selection = eventPtr->selection;    reply.target = eventPtr->target;    reply.property = eventPtr->property;    if (reply.property == None) {	reply.property = reply.target;    }    reply.time = eventPtr->time;    for (infoPtr = winPtr->dispPtr->selectionInfoPtr; infoPtr != NULL;	    infoPtr = infoPtr->nextPtr) {	if (infoPtr->selection == eventPtr->selection)	    break;    }    if (infoPtr == NULL) {	goto refuse;    }    winPtr = (TkWindow *) infoPtr->owner;    /*     * Figure out which kind(s) of conversion to perform.  If handling     * a MULTIPLE conversion, then read the property describing which     * conversions to perform.     */    incr.winPtr = winPtr;    incr.selection = eventPtr->selection;    if (eventPtr->target != winPtr->dispPtr->multipleAtom) {	multiple = 0;	singleInfo[0] = reply.target;	singleInfo[1] = reply.property;	incr.multAtoms = singleInfo;	incr.numConversions = 1;    } else {	Atom type;	int format, result;	unsigned long bytesAfter;	multiple = 1;	incr.multAtoms = NULL;	if (eventPtr->property == None) {	    goto refuse;	}	result = XGetWindowProperty(eventPtr->display,		eventPtr->requestor, eventPtr->property,		0, MAX_PROP_WORDS, False, XA_ATOM,		&type, &format, &incr.numConversions, &bytesAfter,		(unsigned char **) &incr.multAtoms);	if ((result != Success) || (bytesAfter != 0) || (format != 32)		|| (type == None)) {	    if (incr.multAtoms != NULL) {		XFree((char *) incr.multAtoms);	    }	    goto refuse;	}	incr.numConversions /= 2;		/* Two atoms per conversion. */    }    /*     * Loop through all of the requested conversions, and either return     * the entire converted selection, if it can be returned in a single     * bunch, or return INCR information only (the actual selection will     * be returned below).     */    incr.offsets = (int *) ckalloc((unsigned)	    (incr.numConversions*sizeof(int)));    incr.numIncrs = 0;    for (i = 0; i < incr.numConversions; i++) {	Atom target, property, type;	long buffer[TK_SEL_WORDS_AT_ONCE];	register TkSelHandler *selPtr;	int numItems, format;	char *propPtr;	target = incr.multAtoms[2*i];	property = incr.multAtoms[2*i + 1];	incr.offsets[i] = -1;	for (selPtr = winPtr->selHandlerList; selPtr != NULL;		selPtr = selPtr->nextPtr) {	    if ((selPtr->target == target)		    && (selPtr->selection == eventPtr->selection)) {		break;	    }	}	if (selPtr == NULL) {	    /*	     * Nobody seems to know about this kind of request.  If	     * it's of a sort that we can handle without any help, do	     * it.  Otherwise mark the request as an errror.	     */	    numItems = TkSelDefaultSelection(infoPtr, target, (char *) buffer,		    TK_SEL_BYTES_AT_ONCE, &type);	    if (numItems < 0) {		incr.multAtoms[2*i + 1] = None;		continue;	    }	} else {	    ip.selPtr = selPtr;	    ip.nextPtr = pendingPtr;	    pendingPtr = &ip;	    type = selPtr->format;	    numItems = (*selPtr->proc)(selPtr->clientData, 0,		    (char *) buffer, TK_SEL_BYTES_AT_ONCE);	    pendingPtr = ip.nextPtr;	    if ((ip.selPtr == NULL) || (numItems < 0)) {		incr.multAtoms[2*i + 1] = None;		continue;	    }	    if (numItems > TK_SEL_BYTES_AT_ONCE) {		panic("selection handler returned too many bytes");	    }	    ((char *) buffer)[numItems] = '\0';	}	/*	 * Got the selection;  store it back on the requestor's property.	 */	if (numItems == TK_SEL_BYTES_AT_ONCE) {	    /*	     * Selection is too big to send at once;  start an	     * INCR-mode transfer.	     */	    incr.numIncrs++;	    type = winPtr->dispPtr->incrAtom;	    buffer[0] = SelectionSize(selPtr);	    if (buffer[0] == 0) {		incr.multAtoms[2*i + 1] = None;		continue;	    }	    numItems = 1;	    propPtr = (char *) buffer;	    format = 32;	    incr.offsets[i] = 0;	} else if (type == XA_STRING) {	    propPtr = (char *) buffer;	    format = 8;	} else {	    propPtr = (char *) SelCvtToX((char *) buffer,		    type, (Tk_Window) winPtr, &numItems);	    format = 32;	}	XChangeProperty(reply.display, reply.requestor,		property, type, format, PropModeReplace,		(unsigned char *) propPtr, numItems);	if (propPtr != (char *) buffer) {	    ckfree(propPtr);	}    }    /*     * Send an event back to the requestor to indicate that the     * first stage of conversion is complete (everything is done     * except for long conversions that have to be done in INCR     * mode).     */    if (incr.numIncrs > 0) {	XSelectInput(reply.display, reply.requestor, PropertyChangeMask);	incr.timeout = Tcl_CreateTimerHandler(1000, IncrTimeoutProc,	    (ClientData) &incr);	incr.idleTime = 0;	incr.reqWindow = reply.requestor;	incr.time = infoPtr->time;	incr.nextPtr = pendingIncrs;	pendingIncrs = &incr;    }    if (multiple) {	XChangeProperty(reply.display, reply.requestor, reply.property,		XA_ATOM, 32, PropModeReplace,		(unsigned char *) incr.multAtoms,		(int) incr.numConversions*2);    } else {	/*	 * Not a MULTIPLE request.  The first property in "multAtoms"	 * got set to None if there was an error in conversion.	 */	reply.property = incr.multAtoms[1];    }    XSendEvent(reply.display, reply.requestor, False, 0, (XEvent *) &reply);    Tk_DeleteErrorHandler(errorHandler);    /*     * Handle any remaining INCR-mode transfers.  This all happens     * in callbacks to TkSelPropProc, so just wait until the number     * of uncompleted INCR transfers drops to zero.     */    if (incr.numIncrs > 0) {	IncrInfo *incrPtr2;	while (incr.numIncrs > 0) {	    Tcl_DoOneEvent(0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区三区| 午夜精品免费在线观看| 狠狠色伊人亚洲综合成人| 7777精品伊人久久久大香线蕉最新版| 一区二区三区在线视频播放| 精品视频在线免费观看| 日韩福利视频导航| 久久综合色播五月| 成人国产精品免费网站| 亚洲天堂网中文字| 欧美日韩成人激情| 国产真实精品久久二三区| 日本一区二区三区国色天香| 成人成人成人在线视频| 亚洲韩国一区二区三区| 日韩一区二区中文字幕| 国产成人午夜电影网| 亚洲精品伦理在线| 日韩精品专区在线影院重磅| 北岛玲一区二区三区四区| 洋洋av久久久久久久一区| 日韩欧美一二三四区| 粉嫩高潮美女一区二区三区| 亚洲综合激情小说| 欧美www视频| 99re成人在线| 久久超碰97中文字幕| 亚洲人一二三区| 欧美成va人片在线观看| 99久久精品99国产精品| 久久成人久久鬼色| 亚洲欧美自拍偷拍色图| 欧美一区二区三区在线| 99久久国产综合精品色伊| 麻豆一区二区三区| 18欧美亚洲精品| 日韩欧美一区在线| 91网页版在线| 国产一区二区三区av电影 | 日韩精品乱码免费| 亚洲国产精品高清| 91精品国产一区二区三区| av中文字幕亚洲| 麻豆免费精品视频| 亚洲一二三级电影| 中文在线免费一区三区高中清不卡| 欧美视频完全免费看| 成人午夜在线视频| 亚洲女人的天堂| 久久精品国内一区二区三区| 日韩精品一区二区三区在线播放| 成人黄色软件下载| 奇米精品一区二区三区在线观看 | 岛国一区二区在线观看| 日本不卡123| 亚洲香肠在线观看| 国产精品美日韩| 精品成人在线观看| 91精品一区二区三区久久久久久| 97精品国产露脸对白| 国产91丝袜在线18| 国产真实乱偷精品视频免| 日本成人中文字幕| 亚洲午夜免费视频| 亚洲一区二区三区四区五区黄| 中文字幕第一区综合| 国产午夜亚洲精品不卡| 日韩免费高清视频| 日韩免费一区二区| 91精品国产一区二区| 欧美视频在线一区二区三区| 97精品电影院| 一本大道av伊人久久综合| 成人精品视频一区二区三区| 国产精品一色哟哟哟| 国产精品夜夜爽| 国产一级精品在线| 国产一区二区三区免费播放| 国产一二精品视频| 国产91精品久久久久久久网曝门| 国产乱人伦精品一区二区在线观看 | 久久精品一级爱片| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲视频图片小说| 亚洲欧美一区二区在线观看| 中文字幕在线视频一区| 国产精品久久久久久久久久免费看| 久久久久久免费毛片精品| 日韩欧美在线一区二区三区| 欧美精品一区二区三区高清aⅴ| 日韩精品一区二区三区中文不卡| 欧美精品一区二区三区蜜桃| 久久综合九色综合欧美98| 久久亚洲私人国产精品va媚药| 久久精品一区二区| 136国产福利精品导航| 亚洲五码中文字幕| 日av在线不卡| 懂色av一区二区在线播放| 91丨porny丨国产| 欧美疯狂性受xxxxx喷水图片| 日韩欧美一级在线播放| 国产蜜臀97一区二区三区| 亚洲欧洲制服丝袜| 日韩不卡手机在线v区| 精品一区二区三区的国产在线播放| 国产一本一道久久香蕉| 色综合久久久网| 91精品国产91久久综合桃花| 久久精品一区四区| 一区二区三区蜜桃| 精品一区二区三区的国产在线播放| 波多野结衣亚洲一区| 欧美日韩国产综合久久| 久久久不卡网国产精品一区| 亚洲欧美日韩在线| 麻豆精品一区二区三区| av亚洲精华国产精华精华| 777xxx欧美| 1024国产精品| 精品夜夜嗨av一区二区三区| 91啪亚洲精品| 2019国产精品| 亚洲国产精品久久久男人的天堂| 国产成人免费av在线| 欧美日韩国产高清一区二区三区| 久久久精品欧美丰满| 午夜精品一区二区三区电影天堂 | 成人免费看视频| 欧美日产国产精品| 中文字幕av资源一区| 日本最新不卡在线| 一本色道久久综合亚洲精品按摩| 欧美成人乱码一区二区三区| 伊人性伊人情综合网| 国产精品一区在线观看乱码 | 久久机这里只有精品| 欧美日韩国产首页在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久久久99久久久精品网站| 亚洲成人动漫一区| 成人免费毛片app| 欧美mv和日韩mv的网站| 亚洲高清一区二区三区| 91麻豆福利精品推荐| 国产亚洲欧美日韩日本| 美女www一区二区| 欧美日韩黄色一区二区| 一区二区三区国产精品| 不卡av在线网| 久久久久9999亚洲精品| 精品一区二区三区免费毛片爱| 777奇米成人网| 亚洲第一综合色| 91亚洲精品久久久蜜桃| 中文在线一区二区| 国产麻豆精品theporn| 日韩一区二区免费在线电影| 亚洲国产一区视频| 在线观看一区二区精品视频| 中文字幕乱码久久午夜不卡 | 风流少妇一区二区| 国产香蕉久久精品综合网| 国内不卡的二区三区中文字幕| 91精品国产福利| 日韩成人免费电影| 日韩一区二区在线看| 丝袜美腿一区二区三区| 51精品国自产在线| 日本人妖一区二区| 在线不卡a资源高清| 日本视频在线一区| 欧美一区二区三区免费视频| 免费欧美高清视频| 日韩欧美在线网站| 国产一区二区不卡| 欧美国产日本韩| 波多野结衣中文字幕一区| 一区在线中文字幕| 色婷婷久久综合| 午夜精品久久久久久久99水蜜桃| 91 com成人网| 精品一区二区在线免费观看| 久久久久久久av麻豆果冻| 成人国产亚洲欧美成人综合网 | 一本一道波多野结衣一区二区| 亚洲乱码精品一二三四区日韩在线| 色偷偷久久人人79超碰人人澡| 亚洲激情在线播放| 欧美日韩一区二区三区视频| 日本三级亚洲精品| 久久久久久久久久看片| eeuss鲁片一区二区三区| 一二三区精品视频| 日韩免费观看高清完整版 | 美国欧美日韩国产在线播放 | 国产精品久久久一本精品 | 国产精品盗摄一区二区三区| www.日韩精品| 亚洲制服丝袜av|