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

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

?? fserve.c

?? 遠程桌面連接工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
    switch (type) {    case FS_OPEN_FONT:	size = sizeof(FSBlockedFontRec);	break;    case FS_LOAD_GLYPHS:	size = sizeof(FSBlockedGlyphRec);	break;    case FS_LIST_FONTS:	size = sizeof(FSBlockedListRec);	break;    case FS_LIST_WITH_INFO:	size = sizeof(FSBlockedListInfoRec);	break;    default:	break;    }    blockrec->data = (pointer) xalloc(size);    if (!blockrec->data) {	xfree(blockrec);	return (FSBlockDataPtr) 0;    }    blockrec->client = client;    blockrec->sequence_number = fsfpe->current_seq;    blockrec->type = type;    blockrec->depending = 0;    blockrec->next = (FSBlockDataPtr) 0;    /* stick it on the end of the list (since its expected last) */    br = (FSBlockDataPtr) fsfpe->blocked_requests;    if (!br) {	fsfpe->blocked_requests = (pointer) blockrec;    } else {	while (br->next)	    br = br->next;	br->next = blockrec;    }    return blockrec;}static void_fs_remove_block_rec(conn, blockrec)    FSFpePtr    conn;    FSBlockDataPtr blockrec;{    FSBlockDataPtr br,                last;    last = (FSBlockDataPtr) 0;    br = (FSBlockDataPtr) conn->blocked_requests;    while (br) {	if (br == blockrec) {	    if (last)		last->next = br->next;	    else		conn->blocked_requests = (pointer) br->next;	    if (br->type == FS_LOAD_GLYPHS)	    {		FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr)br->data;		if (bglyph->num_expected_ranges)		    xfree(bglyph->expected_ranges);	    }	    xfree(br->data);	    xfree(br);	    return;	}	last = br;	br = br->next;    }}static voidsignal_clients_depending(clients_depending)FSClientsDependingPtr *clients_depending;{    FSClientsDependingPtr p = *clients_depending, p2;    *clients_depending = (FSClientsDependingPtr)0;    while (p != (FSClientsDependingPtr)0)    {	p2 = p;	ClientSignal(p->client);	p = p->next;	xfree(p2);    }}static intadd_clients_depending(clients_depending, client)FSClientsDependingPtr *clients_depending;pointer client;{    while (*clients_depending != (FSClientsDependingPtr)0)    {	if ((*clients_depending)->client == client) return Suspended;	clients_depending = &(*clients_depending)->next;    }    *clients_depending = (FSClientsDependingPtr)xalloc(			     sizeof(FSClientsDependingRec));    if (!*clients_depending)	return BadAlloc;    (*clients_depending)->client = client;    (*clients_depending)->next = 0;    return Suspended;}static voidclean_aborted_blockrec(blockrec)    FSBlockDataPtr blockrec;{    switch(blockrec->type)    {	case FS_LOAD_GLYPHS:	{	    FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr)blockrec->data;	    FontPtr pfont = bglyph->pfont;	    int num_expected_ranges = bglyph->num_expected_ranges;	    fsRange *expected_ranges = bglyph->expected_ranges;	    _fs_clean_aborted_loadglyphs(pfont,				     num_expected_ranges,				     expected_ranges);	    signal_clients_depending(&bglyph->clients_depending);	    break;	}	case FS_OPEN_FONT:	{	    FSBlockedFontPtr bfont = (FSBlockedFontPtr)blockrec->data;	    signal_clients_depending(&bfont->clients_depending);	    break;	}	default:	    break;    }}static voidfs_abort_blockrec(conn, blockrec)    FSFpePtr    conn;    FSBlockDataPtr blockrec;{    clean_aborted_blockrec(blockrec);    _fs_remove_block_rec(conn, blockrec);}static voidfs_free_font(bfont)    FSBlockedFontPtr bfont;{    FontPtr     pfont;    FSFontDataRec *fsd;    pfont = bfont->pfont;    fsd = (FSFontDataRec *) pfont->fpePrivate;    /* xfree better be able to handle NULL */    (*pfont->unload_font)(pfont);    DeleteFontClientID(fsd->fontid);    xfree(fsd->name);    xfree(pfont->info.isStringProp);    xfree(pfont->info.props);    xfree(pfont);    xfree(fsd);    bfont->pfont = (FontPtr) 0;}static void_fs_cleanup_font(bfont)    FSBlockedFontPtr bfont;{    FSFontDataRec *fsd;    if (bfont->pfont)    {    	fsd = (FSFontDataRec *) bfont->pfont->fpePrivate;        	/* make sure the FS knows we choked on it */    	fs_send_close_font(fsd->fpe, bfont->fontid);        	fs_free_font(bfont);    }    bfont->errcode = AllocError;}static intfs_read_open_font(fpe, blockrec)    FontPathElementPtr fpe;    FSBlockDataPtr blockrec;{    FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsOpenBitmapFontReply rep;    FSBlockDataPtr blockOrig;    FSBlockedFontPtr origBfont;    /* pull out the OpenFont reply */    memcpy(&rep, &blockrec->header, SIZEOF(fsGenericReply));    if (rep.type == FS_Error) {	_fs_eat_rest_of_error(conn, (fsError *) & rep);	return BadFontName;    } else {			/* get rest of reply */	if (_fs_read(conn, (char *) &rep + SIZEOF(fsGenericReply),	      SIZEOF(fsOpenBitmapFontReply) - SIZEOF(fsGenericReply)) == -1) {	    /* If we're not reopening a font, we'll allocate the	       structures again after connection is reestablished.  */	    if (!(bfont->flags & FontReopen)) fs_free_font(bfont);	    return StillWorking;	}    }    /* If we're not reopening a font and FS detected a duplicate font       open request, replace our reference to the new font with a       reference to an existing font (possibly one not finished       opening).  If this is a reopen, keep the new font reference...       it's got the metrics and extents we read when the font was opened       before.  This also gives us the freedom to easily close the font       if we we decide (in fs_read_query_info()) that we don't like what       we got. */    if (rep.otherid && !(bfont->flags & FontReopen)) {	(void) fs_send_close_font(fpe, bfont->fontid);	/* Find old font if we're completely done getting it from server. */	fs_free_font(bfont);	bfont->pfont = find_old_font(rep.otherid);	bfont->fontid = rep.otherid;	bfont->state = FS_DONE_REPLY;	/*	 * look for a blocked request to open the same font	 */	for (blockOrig = (FSBlockDataPtr) conn->blocked_requests;		blockOrig;		blockOrig = blockOrig->next) {	    if (blockOrig != blockrec && blockOrig->type == FS_OPEN_FONT) {		origBfont = (FSBlockedFontPtr) blockOrig->data;		if (origBfont->fontid == rep.otherid) {		    blockrec->depending = blockOrig->depending;		    blockOrig->depending = blockrec;		    bfont->state = FS_DEPENDING;		    bfont->pfont = origBfont->pfont;		    break;		}	    }	}	if (bfont->pfont == NULL)	{	    /* XXX - something nasty happened */	    return BadFontName;	}	return AccessDone;    }    bfont->pfont->info.cachable = rep.cachable != 0;    bfont->state = FS_INFO_REPLY;    /* ask for the next stage */    (void) fs_send_query_info(fpe, blockrec);    return StillWorking;}static intfs_read_query_info(fpe, blockrec)    FontPathElementPtr fpe;    FSBlockDataPtr blockrec;{    FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsQueryXInfoReply rep;    fsPropInfo  pi;    fsPropOffset *po;    pointer     pd;    unsigned long prop_len;    FSBlockedFontRec newbfont, *oldbfont;    FontRec newpfont, *oldpfont;    int err;    /* If this is a reopen, accumulate the query info into a dummy       font and compare to our original data. */    if (bfont->flags & FontReopen)    {	newbfont = *(oldbfont = bfont);	bfont = &newbfont;	newpfont = *(oldpfont = oldbfont->pfont);	newpfont.info.isStringProp = NULL;	newpfont.info.props = NULL;	newbfont.pfont = &newpfont;	err = StillWorking;    }    /* pull out the QueryXInfo reply */    memcpy(&rep, &blockrec->header, SIZEOF(fsGenericReply));    if (_fs_read(conn, (char *) &rep + SIZEOF(fsGenericReply),		 SIZEOF(fsQueryXInfoReply) - SIZEOF(fsGenericReply)) == -1) {	if (bfont->flags & FontReopen) goto bail;	fs_free_font(bfont);	return StillWorking;    }    /* move the data over */    fsUnpack_XFontInfoHeader(&rep, &bfont->pfont->info);    _fs_init_fontinfo(conn, &bfont->pfont->info);    if (bfont->pfont->info.terminalFont)    {	bfont->format =	    (bfont->format & ~ (BitmapFormatImageRectMask)) |	    BitmapFormatImageRectMax;    }    if (_fs_read(conn, (char *) &pi, SIZEOF(fsPropInfo)) == -1) {	if (bfont->flags & FontReopen) goto bail;	fs_free_font(bfont);	return StillWorking;    }    prop_len = pi.num_offsets * SIZEOF(fsPropOffset);    po = (fsPropOffset *) xalloc(prop_len);    pd = (pointer) xalloc(pi.data_len);    if (!po || !pd) {	xfree(pd);	xfree(po);	/* clear the wire */	(void) _fs_drain_bytes(conn, prop_len + pi.data_len);	/* clean up the font */	if (bfont->flags & FontReopen) { err = AllocError ; goto bail; }	(void) _fs_cleanup_font(bfont);	return AllocError;    }    if (_fs_read_pad(conn, (char *) po, prop_len) == -1 ||	    _fs_read_pad(conn, (char *) pd, pi.data_len) == -1) {	xfree(pd);	xfree(po);	if (bfont->flags & FontReopen) goto bail;	fs_free_font(bfont);	return StillWorking;    }    if (_fs_convert_props(&pi, po, pd, &bfont->pfont->info) == -1)    {    	xfree(po);    	xfree(pd);	if (bfont->flags & FontReopen) { err = AllocError ; goto bail; }	(void) _fs_cleanup_font(bfont);	return AllocError;    }    xfree(po);    xfree(pd);    if (bfont->flags & FontReopen)    {	int i;	err = BadFontName;	/* We're reopening a font that we lost because of a downed	   connection.  In the interest of avoiding corruption from	   opening a different font than the old one (we already have	   its metrics, extents, and probably some of its glyphs),	   verify that the metrics and properties all match.  */	if (newpfont.info.firstCol != oldpfont->info.firstCol ||	    newpfont.info.lastCol != oldpfont->info.lastCol ||	    newpfont.info.firstRow != oldpfont->info.firstRow ||	    newpfont.info.lastRow != oldpfont->info.lastRow ||	    newpfont.info.defaultCh != oldpfont->info.defaultCh ||	    newpfont.info.noOverlap != oldpfont->info.noOverlap ||	    newpfont.info.terminalFont != oldpfont->info.terminalFont ||	    newpfont.info.constantMetrics != oldpfont->info.constantMetrics ||	    newpfont.info.constantWidth != oldpfont->info.constantWidth ||	    newpfont.info.inkInside != oldpfont->info.inkInside ||	    newpfont.info.inkMetrics != oldpfont->info.inkMetrics ||	    newpfont.info.allExist != oldpfont->info.allExist ||	    newpfont.info.drawDirection != oldpfont->info.drawDirection ||	    newpfont.info.cachable != oldpfont->info.cachable ||	    newpfont.info.anamorphic != oldpfont->info.anamorphic ||	    newpfont.info.maxOverlap != oldpfont->info.maxOverlap ||	    newpfont.info.fontAscent != oldpfont->info.fontAscent ||	    newpfont.info.fontDescent != oldpfont->info.fontDescent ||	    newpfont.info.nprops != oldpfont->info.nprops)	    goto bail;#define MATCH(xci1, xci2) \	(((xci1).leftSideBearing == (xci2).leftSideBearing) && \	 ((xci1).rightSideBearing == (xci2).rightSideBearing) && \	 ((xci1).characterWidth == (xci2).characterWidth) && \	 ((xci1).ascent == (xci2).ascent) && \	 ((xci1).descent == (xci2).descent) && \	 ((xci1).attributes == (xci2).attributes))	if (!MATCH(newpfont.info.maxbounds, oldpfont->info.maxbounds) ||	    !MATCH(newpfont.info.minbounds, oldpfont->info.minbounds) ||	    !MATCH(newpfont.info.ink_maxbounds, oldpfont->info.ink_maxbounds) ||	    !MATCH(newpfont.info.ink_minbounds, oldpfont->info.ink_minbounds))	    goto bail;#undef MATCH	for (i = 0; i < newpfont.info.nprops; i++)	    if (newpfont.info.isStringProp[i] !=		    oldpfont->info.isStringProp[i] ||		newpfont.info.props[i].name !=		    oldpfont->info.props[i].name ||		newpfont.info.props[i].value !=		    oldpfont->info.props[i].value)		goto bail;	err = Successful;    bail:	if (err != Successful && err != StillWorking)	{	    /* Failure.  Close the font. */    	    fs_send_close_font(((FSFontDataPtr)oldpfont->fpePrivate)->fpe,			       bfont->fontid);	    ((FSFontDataPtr)oldpfont->fpePrivate)->generation  = -1;	}	xfree(newpfont.info.isStringProp);	xfree(newpfont.info.props);	if (err == Successful) oldbfont->state = FS_DONE_REPLY;	return err;    }    if (glyphCachingMode == CACHING_OFF ||	glyphCachingMode == CACHE_16_BIT_GLYPHS && !bfont->pfont->info.lastRow)	bfont->flags |= FontLoadAll;    bfont->state = FS_EXTENT_REPLY;    fs_send_query_extents(fpe, blockrec);    return StillWorking;}static intfs_read_extent_info(fpe, blockrec)    FontPathElementPtr fpe;    FSBlockDataPtr blockrec;{    FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data;    FSFontDataPtr fsd = (FSFontDataPtr) bfont->pfont->fpePrivate;    FSFpePtr    conn = (FSFpePtr) fpe->private;    fsQueryXExtents16Reply rep;    int         i;    int		numInfos;    Bool	haveInk = FALSE; /* need separate ink metrics? */    CharInfoPtr ci,                pCI;    FSFontPtr   fsfont = (FSFontPtr) bfont->pfont->fontPrivate;    fsXCharInfo *fsci;    fsXCharInfo fscilocal;    pointer fscip;    /* read the QueryXExtents reply */    memcpy(&rep, &blockrec->header, SIZEOF(fsGenericReply));    if (_fs_read(conn, (char *) &rep + SIZEOF(fsGenericReply),	      SIZEOF(fsQueryXExtents16Reply) - SIZEOF(fsGenericReply)) == -1) {	fs_free_font(bfont);	return StillWorking;    }    /* move the data over */    /* need separate inkMetrics for fixed font server protocol version */    numInfos =  rep.num_extents;    if (bfont->pfont->info.terminalFont && conn->fsMajorVersion > 1)    {	numInfos *= 2;	haveInk = TRUE;    }    ci = pCI = (CharInfoPtr) xalloc(sizeof(CharInfoRec) * numInfos);/* XXX this could be done with an ALLOCATE_LOCAL */    fsci = (fsXCharInfo *) xalloc(SIZEOF(fsXCharInfo) * rep.num_extents);    if (!pCI || !fsci) {	xfree(pCI);	xfree(fsci);	/* clear the unusable data */	_fs_drain_bytes(conn, SIZEOF(fsXCharInfo) * rep.num_extents);	_fs_cleanup_font(bfont);	return AllocError;    }    fsfont->encoding = pCI;    if (haveInk)	fsfont->inkMetrics = pCI + rep.num_extents;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产亚洲欧美成人综合网| 亚洲第一精品在线| 欧美日韩一区二区三区高清 | 日韩黄色免费网站| 日韩精品一区二区三区swag | 天使萌一区二区三区免费观看| 日韩午夜在线播放| 91丝袜国产在线播放| 亚洲视频在线一区二区| 欧美理论电影在线| 国产成人综合亚洲网站| 亚洲高清久久久| 国产午夜一区二区三区| 色素色在线综合| 精品国产精品一区二区夜夜嗨| yourporn久久国产精品| 日韩电影在线看| 久久精品在线观看| 成人美女视频在线观看18| 午夜久久久久久电影| 国产精品久久毛片a| 欧美日本视频在线| av亚洲产国偷v产偷v自拍| 日本在线不卡视频| 成人欧美一区二区三区小说| 日韩欧美国产系列| 欧美三级电影在线看| 成人美女在线观看| 美国十次综合导航| 香蕉久久一区二区不卡无毒影院| 国产精品欧美一区二区三区| 欧美成人精精品一区二区频| 欧美日韩一级视频| 99久久99久久综合| 蜜臂av日日欢夜夜爽一区| 国产精品久久久久7777按摩| 欧美日韩国产另类不卡| 成熟亚洲日本毛茸茸凸凹| 精品一区免费av| 蜜桃视频免费观看一区| 午夜精品福利视频网站| 亚洲乱码中文字幕综合| 国产精品丝袜一区| 欧美美女一区二区在线观看| 99久久99久久精品国产片果冻 | 久久久久久黄色| 日本乱人伦aⅴ精品| 9i看片成人免费高清| 国产一区在线精品| 久久福利资源站| 久久国产剧场电影| 激情综合色综合久久综合| 亚洲国产日日夜夜| 一区二区在线观看视频在线观看| 国产精品激情偷乱一区二区∴| 久久久精品国产免费观看同学| 7777精品伊人久久久大香线蕉经典版下载 | 91麻豆免费看片| 不卡一卡二卡三乱码免费网站| 欧美aaaaa成人免费观看视频| 亚洲成人午夜电影| 亚洲国产精品一区二区尤物区| 久久综合狠狠综合久久激情| 精品国产乱码久久| 成人免费av网站| 成人av综合一区| 国产伦精品一区二区三区免费迷| 国产成人精品免费视频网站| 国产成人av电影在线播放| 97国产精品videossex| 色婷婷av一区| 欧美吞精做爰啪啪高潮| 五月激情综合网| 麻豆91在线播放免费| 亚洲精品高清在线观看| 日韩av电影免费观看高清完整版 | 91丝袜美腿高跟国产极品老师 | 成人网男人的天堂| 一本久道久久综合中文字幕| 国产精品每日更新在线播放网址 | 欧美影院一区二区三区| 欧美xxxxx牲另类人与| 久久伊人中文字幕| 国产精品久久久久一区二区三区共 | 成人高清免费观看| 国产福利精品一区| 97久久精品人人做人人爽50路| 99久久婷婷国产综合精品| 欧美综合视频在线观看| 欧美r级电影在线观看| 精品国精品国产| 自拍偷拍欧美精品| 一区二区在线免费观看| 国产精品12区| 国产精品一区在线观看你懂的| 在线一区二区三区四区| 在线欧美小视频| 欧美一卡二卡三卡| 久久综合av免费| 日韩精品亚洲专区| 国产一区999| 91麻豆精品国产综合久久久久久| 欧美一区二区三区四区久久| 一区在线中文字幕| 亚洲国产激情av| 国内久久婷婷综合| 99在线精品观看| 精品sm捆绑视频| 亚洲444eee在线观看| 国产91色综合久久免费分享| 欧美一区二区精品| 亚洲激情一二三区| 成人丝袜18视频在线观看| 欧美一区二区视频在线观看2022| 亚洲综合av网| 国产精品538一区二区在线| 91精品国产乱| 欧美日韩和欧美的一区二区| 琪琪久久久久日韩精品| 久久精品视频一区二区| 国产精品一区二区久久不卡| 欧美日韩激情在线| **网站欧美大片在线观看| 日本aⅴ亚洲精品中文乱码| 久草热8精品视频在线观看| 欧美精品一二三四| 亚洲一区二区三区国产| 欧美一区午夜精品| 成人午夜看片网址| 综合亚洲深深色噜噜狠狠网站| 日韩欧美视频一区| 欧美中文字幕一区二区三区| 国产老肥熟一区二区三区| 亚洲欧美日韩国产手机在线| 国产精品久久久久久一区二区三区| www.久久久久久久久| 国产不卡视频一区| 不卡的av中国片| 欧美一卡二卡在线观看| 久久精品视频免费| 欧美国产乱子伦| 欧美一卡二卡三卡| 欧洲一区二区av| 国产精品888| 精品一区二区三区在线视频| 亚洲精品亚洲人成人网在线播放| 日韩午夜激情av| 成人午夜激情片| 日韩福利视频网| 免费成人在线影院| 亚洲第四色夜色| 中文字幕日韩一区| 欧美三区在线观看| 欧美在线短视频| 欧美一区二区高清| 在线免费亚洲电影| 欧美伦理影视网| 91 com成人网| 欧美亚洲国产一区二区三区va | 日本不卡一区二区三区高清视频| 国产精品国产馆在线真实露脸| 制服丝袜日韩国产| 在线精品视频免费观看| 国产一二精品视频| 亚洲18女电影在线观看| 久久精品水蜜桃av综合天堂| 国产最新精品精品你懂的| 久久久精品免费观看| 欧美一区二区三区成人| 日韩欧美精品在线| 久久久久久综合| 夜色激情一区二区| 成人国产精品免费观看| 国产一区免费电影| 一本一本大道香蕉久在线精品| 欧美裸体bbwbbwbbw| 丝袜美腿成人在线| 91香蕉视频污在线| 国产欧美精品在线观看| 欧美国产成人精品| 成人国产精品免费网站| 国产三级精品视频| 国产伦精品一区二区三区免费| 精品日韩99亚洲| 精品久久久久一区二区国产| 91精品国产综合久久小美女| 日韩午夜在线观看视频| 欧美精品一区二区三区四区| 亚洲男女一区二区三区| 丝瓜av网站精品一区二区| 久久精品国产99国产| 成人国产精品免费网站| 一本色道亚洲精品aⅴ| 欧美日韩一级片在线观看| 91麻豆精品久久久久蜜臀| 精品国产91亚洲一区二区三区婷婷| 久久久精品一品道一区| 午夜精品福利久久久| 成人久久久精品乱码一区二区三区| 91社区在线播放|