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

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

?? tkunixselect.c

?? linux系統下的音頻通信
?? C
?? 第 1 頁 / 共 3 頁
字號:
	}	Tcl_DeleteTimerHandler(incr.timeout);	errorHandler = Tk_CreateErrorHandler(winPtr->display,		-1, -1,-1, (int (*)()) NULL, (ClientData) NULL);	XSelectInput(reply.display, reply.requestor, 0L);	Tk_DeleteErrorHandler(errorHandler);	if (pendingIncrs == &incr) {	    pendingIncrs = incr.nextPtr;	} else {	    for (incrPtr2 = pendingIncrs; incrPtr2 != NULL;		    incrPtr2 = incrPtr2->nextPtr) {		if (incrPtr2->nextPtr == &incr) {		    incrPtr2->nextPtr = incr.nextPtr;		    break;		}	    }	}    }    /*     * All done.  Cleanup and return.     */    ckfree((char *) incr.offsets);    if (multiple) {	XFree((char *) incr.multAtoms);    }    return;    /*     * An error occurred.  Send back a refusal message.     */    refuse:    reply.property = None;    XSendEvent(reply.display, reply.requestor, False, 0, (XEvent *) &reply);    Tk_DeleteErrorHandler(errorHandler);    return;}/* *---------------------------------------------------------------------- * * SelRcvIncrProc -- * *	This procedure handles the INCR protocol on the receiving *	side.  It is invoked in response to property changes on *	the requestor's window (which hopefully are because a new *	chunk of the selection arrived). * * Results: *	None. * * Side effects: *	If a new piece of selection has arrived, a procedure is *	invoked to deal with that piece.  When the whole selection *	is here, a flag is left for the higher-level procedure that *	initiated the selection retrieval. * *---------------------------------------------------------------------- */static voidSelRcvIncrProc(clientData, eventPtr)    ClientData clientData;		/* Information about retrieval. */    register XEvent *eventPtr;		/* X PropertyChange event. */{    register TkSelRetrievalInfo *retrPtr = (TkSelRetrievalInfo *) clientData;    char *propInfo;    Atom type;    int format, result;    unsigned long numItems, bytesAfter;    Tcl_Interp *interp;    if ((eventPtr->xproperty.atom != retrPtr->property)	    || (eventPtr->xproperty.state != PropertyNewValue)	    || (retrPtr->result != -1)) {	return;    }    propInfo = NULL;    result = XGetWindowProperty(eventPtr->xproperty.display,	    eventPtr->xproperty.window, retrPtr->property, 0, MAX_PROP_WORDS,	    True, (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;	goto done;    }    if (numItems == 0) {	retrPtr->result = TCL_OK;    } else if ((type == XA_STRING)	    || (type == retrPtr->winPtr->dispPtr->textAtom)	    || (type == retrPtr->winPtr->dispPtr->compoundTextAtom)) {	if (format != 8) {	    Tcl_SetResult(retrPtr->interp, (char *) NULL, TCL_STATIC);	    sprintf(retrPtr->interp->result,		"bad format for string selection: wanted \"8\", got \"%d\"",		format);	    retrPtr->result = TCL_ERROR;	    goto done;	}        interp = retrPtr->interp;        Tcl_Preserve((ClientData) interp);	result = (*retrPtr->proc)(retrPtr->clientData, interp, propInfo);        Tcl_Release((ClientData) interp);	if (result != TCL_OK) {	    retrPtr->result = result;	}    } else {	char *string;	if (format != 32) {	    Tcl_SetResult(retrPtr->interp, (char *) NULL, TCL_STATIC);	    sprintf(retrPtr->interp->result,		"bad format for selection: wanted \"32\", got \"%d\"",		format);	    retrPtr->result = TCL_ERROR;	    goto done;	}	string = SelCvtFromX((long *) propInfo, (int) numItems, type,		(Tk_Window) retrPtr->winPtr);        interp = retrPtr->interp;        Tcl_Preserve((ClientData) interp);	result = (*retrPtr->proc)(retrPtr->clientData, interp, string);        Tcl_Release((ClientData) interp);	if (result != TCL_OK) {	    retrPtr->result = result;	}	ckfree(string);    }    done:    XFree(propInfo);    retrPtr->idleTime = 0;}/* *---------------------------------------------------------------------- * * SelectionSize -- * *	This procedure is called when the selection is too large to *	send in a single buffer;  it computes the total length of *	the selection in bytes. * * Results: *	The return value is the number of bytes in the selection *	given by selPtr. * * Side effects: *	The selection is retrieved from its current owner (this is *	the only way to compute its size). * *---------------------------------------------------------------------- */static intSelectionSize(selPtr)    TkSelHandler *selPtr;	/* Information about how to retrieve				 * the selection whose size is wanted. */{    char buffer[TK_SEL_BYTES_AT_ONCE+1];    int size, chunkSize;    TkSelInProgress ip;    size = TK_SEL_BYTES_AT_ONCE;    ip.selPtr = selPtr;    ip.nextPtr = pendingPtr;    pendingPtr = &ip;    do {	chunkSize = (*selPtr->proc)(selPtr->clientData, size,			(char *) buffer, TK_SEL_BYTES_AT_ONCE);	if (ip.selPtr == NULL) {	    size = 0;	    break;	}	size += chunkSize;    } while (chunkSize == TK_SEL_BYTES_AT_ONCE);    pendingPtr = ip.nextPtr;    return size;}/* *---------------------------------------------------------------------- * * IncrTimeoutProc -- * *	This procedure is invoked once a second while sending the *	selection to a requestor in INCR mode.  After a while it *	gives up and aborts the selection operation. * * Results: *	None. * * Side effects: *	A new timeout gets registered so that this procedure gets *	called again in another second, unless too many seconds *	have elapsed, in which case incrPtr is marked as "all done". * *---------------------------------------------------------------------- */static voidIncrTimeoutProc(clientData)    ClientData clientData;		/* Information about INCR-mode					 * selection retrieval for which					 * we are selection owner. */{    register IncrInfo *incrPtr = (IncrInfo *) clientData;    incrPtr->idleTime++;    if (incrPtr->idleTime >= 5) {	incrPtr->numIncrs = 0;    } else {	incrPtr->timeout = Tcl_CreateTimerHandler(1000, IncrTimeoutProc,		(ClientData) incrPtr);    }}/* *---------------------------------------------------------------------- * * SelCvtToX -- * *	Given a selection represented as a string (the normal Tcl form), *	convert it to the ICCCM-mandated format for X, depending on *	the type argument.  This procedure and SelCvtFromX are inverses. * * Results: *	The return value is a malloc'ed buffer holding a value *	equivalent to "string", but formatted as for "type".  It is *	the caller's responsibility to free the string when done with *	it.  The word at *numLongsPtr is filled in with the number of *	32-bit words returned in the result. * * Side effects: *	None. * *---------------------------------------------------------------------- */static long *SelCvtToX(string, type, tkwin, numLongsPtr)    char *string;		/* String representation of selection. */    Atom type;			/* Atom specifying the X format that is				 * desired for the selection.  Should not				 * be XA_STRING (if so, don't bother calling				 * this procedure at all). */    Tk_Window tkwin;		/* Window that governs atom conversion. */    int *numLongsPtr;		/* Number of 32-bit words contained in the				 * result. */{    register char *p;    char *field;    int numFields;    long *propPtr, *longPtr;#define MAX_ATOM_NAME_LENGTH 100    char atomName[MAX_ATOM_NAME_LENGTH+1];    /*     * The string is assumed to consist of fields separated by spaces.     * The property gets generated by converting each field to an     * integer number, in one of two ways:     * 1. If type is XA_ATOM, convert each field to its corresponding     *	  atom.     * 2. If type is anything else, convert each field from an ASCII number     *    to a 32-bit binary number.     */    numFields = 1;    for (p = string; *p != 0; p++) {	if (isspace(UCHAR(*p))) {	    numFields++;	}    }    propPtr = (long *) ckalloc((unsigned) numFields*sizeof(long));    /*     * Convert the fields one-by-one.     */    for (longPtr = propPtr, *numLongsPtr = 0, p = string;	    ; longPtr++, (*numLongsPtr)++) {	while (isspace(UCHAR(*p))) {	    p++;	}	if (*p == 0) {	    break;	}	field = p;	while ((*p != 0) && !isspace(UCHAR(*p))) {	    p++;	}	if (type == XA_ATOM) {	    int length;	    length = p - field;	    if (length > MAX_ATOM_NAME_LENGTH) {		length = MAX_ATOM_NAME_LENGTH;	    }	    strncpy(atomName, field, (unsigned) length);	    atomName[length] = 0;	    *longPtr = (long) Tk_InternAtom(tkwin, atomName);	} else {	    char *dummy;	    *longPtr = strtol(field, &dummy, 0);	}    }    return propPtr;}/* *---------------------------------------------------------------------- * * SelCvtFromX -- * *	Given an X property value, formatted as a collection of 32-bit *	values according to "type" and the ICCCM conventions, convert *	the value to a string suitable for manipulation by Tcl.  This *	procedure is the inverse of SelCvtToX. * * Results: *	The return value is the string equivalent of "property".  It is *	malloc-ed and should be freed by the caller when no longer *	needed. * * Side effects: *	None. * *---------------------------------------------------------------------- */static char *SelCvtFromX(propPtr, numValues, type, tkwin)    register long *propPtr;	/* Property value from X. */    int numValues;		/* Number of 32-bit values in property. */    Atom type;			/* Type of property  Should not be				 * XA_STRING (if so, don't bother calling				 * this procedure at all). */    Tk_Window tkwin;		/* Window to use for atom conversion. */{    char *result;    int resultSpace, curSize, fieldSize;    char *atomName;    /*     * Convert each long in the property to a string value, which is     * either the name of an atom (if type is XA_ATOM) or a hexadecimal     * string.  Make an initial guess about the size of the result, but     * be prepared to enlarge the result if necessary.     */    resultSpace = 12*numValues+1;    curSize = 0;    atomName = "";	/* Not needed, but eliminates compiler warning. */    result = (char *) ckalloc((unsigned) resultSpace);    *result  = '\0';    for ( ; numValues > 0; propPtr++, numValues--) {	if (type == XA_ATOM) {	    atomName = Tk_GetAtomName(tkwin, (Atom) *propPtr);	    fieldSize = strlen(atomName) + 1;	} else {	    fieldSize = 12;	}	if (curSize+fieldSize >= resultSpace) {	    char *newResult;	    resultSpace *= 2;	    if (curSize+fieldSize >= resultSpace) {		resultSpace = curSize + fieldSize + 1;	    }	    newResult = (char *) ckalloc((unsigned) resultSpace);	    strncpy(newResult, result, (unsigned) curSize);	    ckfree(result);	    result = newResult;	}	if (curSize != 0) {	    result[curSize] = ' ';	    curSize++;	}	if (type == XA_ATOM) {	    strcpy(result+curSize, atomName);	} else {	    sprintf(result+curSize, "0x%x", (unsigned int) *propPtr);	}	curSize += strlen(result+curSize);    }    return result;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美变态tickle挠乳网站| 久久久精品综合| 99久久免费视频.com| 国产一区二区三区蝌蚪| 香蕉成人啪国产精品视频综合网| 香蕉成人伊视频在线观看| 亚洲视频在线一区二区| 亚洲国产精品精华液2区45| 久久综合狠狠综合久久激情 | 亚洲乱码国产乱码精品精小说| 国产欧美日韩在线看| 欧美精品一区二区不卡| 日韩欧美国产一区在线观看| 91麻豆精品国产91久久久资源速度 | 久久五月婷婷丁香社区| 欧美一区二区三区免费大片| 欧美日韩免费观看一区二区三区| 99re这里只有精品视频首页| 色婷婷综合五月| 在线观看网站黄不卡| 色综合色狠狠综合色| 一本一道波多野结衣一区二区| 东方aⅴ免费观看久久av| 粉嫩久久99精品久久久久久夜 | 欧美一级视频精品观看| 欧美影院一区二区| 欧美一区日本一区韩国一区| 在线观看91av| 欧美xxxxxxxx| 久久精品亚洲麻豆av一区二区 | 中文字幕视频一区| 亚洲免费三区一区二区| 一区二区三区中文字幕在线观看| 午夜精品福利视频网站| 亚洲电影激情视频网站| 日韩精品国产欧美| 蜜桃视频一区二区| 狠狠色丁香婷综合久久| 色综合婷婷久久| 色成年激情久久综合| 欧美日韩和欧美的一区二区| 亚洲天堂成人网| 一区二区欧美国产| 精品一区二区三区免费播放 | 精品污污网站免费看| 日韩亚洲欧美在线| 精品欧美久久久| 亚洲三级小视频| 日韩精品每日更新| 国产尤物一区二区| 91天堂素人约啪| 欧美综合亚洲图片综合区| 日韩精品一区二区在线观看| 国产日本欧美一区二区| 亚洲欧美激情视频在线观看一区二区三区| 日韩精品乱码av一区二区| av不卡在线播放| 日韩欧美一二三四区| 亚洲精品国久久99热| 国产精品一级在线| 欧美一二三区在线观看| 一区二区成人在线视频| 国产精品一区二区91| 欧美一级片在线| 亚洲图片一区二区| 99国产精品视频免费观看| 精品国产在天天线2019| 午夜精品123| 色综合色狠狠天天综合色| 国产日产欧美一区| 久久99精品国产.久久久久久| 欧美综合在线视频| 亚洲欧洲一区二区在线播放| 国产精品一区一区| 欧美一区二区成人6969| 亚洲1区2区3区4区| 91国产免费看| 亚洲免费观看高清完整版在线观看 | 欧美在线制服丝袜| 亚洲天堂网中文字| 国产91高潮流白浆在线麻豆| 日韩精品在线看片z| 国产成人av影院| 日韩一区二区免费在线电影| 亚洲一区二区av在线| av电影在线观看一区| 欧美激情一区二区在线| 国产激情视频一区二区在线观看 | 91精品国产乱| 三级欧美韩日大片在线看| 欧美性感一类影片在线播放| 亚洲男人都懂的| 成人丝袜18视频在线观看| 久久嫩草精品久久久精品一| 日欧美一区二区| 欧美三级三级三级| 亚洲va国产天堂va久久en| 欧美日韩在线不卡| 亚洲国产精品人人做人人爽| 欧美在线不卡视频| 亚洲成a人在线观看| 欧美三日本三级三级在线播放| 亚洲精品视频免费观看| 欧美影视一区在线| 五月婷婷综合在线| 91精品中文字幕一区二区三区| 亚洲va欧美va天堂v国产综合| 欧美日韩aaaaaa| 肉色丝袜一区二区| 欧美v日韩v国产v| 国产成+人+日韩+欧美+亚洲| 日本一二三四高清不卡| 99国产精品久久久久久久久久| 国产精品传媒入口麻豆| 色诱亚洲精品久久久久久| 亚洲国产综合色| 日韩欧美高清在线| 国产一区二区三区国产| 国产精品国产a| 91福利国产成人精品照片| 天天av天天翘天天综合网| 69久久夜色精品国产69蝌蚪网| 麻豆国产一区二区| 国产精品视频观看| 色婷婷一区二区| 日韩精品亚洲一区| 久久综合久色欧美综合狠狠| 丁香婷婷综合色啪| 亚洲免费资源在线播放| 91麻豆精品国产91久久久更新时间 | 偷窥国产亚洲免费视频 | 日韩国产欧美在线视频| 精品久久久久香蕉网| 成人黄色小视频| 亚洲超丰满肉感bbw| 26uuu精品一区二区在线观看| 成人一二三区视频| 一区二区三区精品在线观看| 在线综合亚洲欧美在线视频| 国产91丝袜在线18| 亚洲国产精品自拍| 久久色在线观看| 色婷婷av一区二区三区软件| 美女网站一区二区| 国产精品美女久久久久aⅴ| 欧美群妇大交群中文字幕| 国产一区二区三区美女| 一区二区三区欧美| 久久久久久久电影| 欧美午夜精品免费| 国产精品一区二区久久精品爱涩| 一区二区三区欧美日韩| 久久精品人人爽人人爽| 欧美午夜精品久久久久久孕妇| 国产一区二区三区精品视频| 夜夜爽夜夜爽精品视频| 国产欧美精品一区二区色综合朱莉| 色狠狠综合天天综合综合| 国精产品一区一区三区mba视频 | 国产精品免费视频网站| 欧美高清精品3d| aaa亚洲精品| 捆绑变态av一区二区三区| 亚洲另类在线一区| 久久久久久久久蜜桃| 欧美精品1区2区| 在线视频观看一区| 成人午夜在线视频| 另类中文字幕网| 亚洲成人资源网| 亚洲丝袜另类动漫二区| 久久久影院官网| 91精品国产综合久久婷婷香蕉| 色又黄又爽网站www久久| 国产高清亚洲一区| 看电影不卡的网站| 午夜国产精品影院在线观看| 日本va欧美va精品| 亚洲永久精品国产| 国产精品久久看| 26uuu国产电影一区二区| 欧美日韩精品电影| 91麻豆精东视频| 不卡一区二区中文字幕| 国产精品538一区二区在线| 美女mm1313爽爽久久久蜜臀| 亚洲午夜精品一区二区三区他趣| 国产精品毛片大码女人| 精品福利一二区| 91麻豆精品久久久久蜜臀| 欧美午夜电影在线播放| 一本色道久久综合亚洲91| hitomi一区二区三区精品| 国产精品18久久久久久久久久久久 | 免费在线欧美视频| 午夜精品久久久久久久99樱桃| 亚洲午夜一区二区三区| 亚洲欧美电影一区二区| 亚洲青青青在线视频| 亚洲视频在线观看三级|