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

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

?? pstcache.c

?? LInux 下的遠程桌面工具 Rdesktop
?? C
字號:
/* -*- c-basic-offset: 8 -*-   rdesktop: A Remote Desktop Protocol client.   Persistent Bitmap Cache routines   Copyright (C) Jeroen Meijer 2004-2007   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "rdesktop.h"#define MAX_CELL_SIZE		0x1000	/* pixels */#define IS_PERSISTENT(id) (id < 8 && g_pstcache_fd[id] > 0)extern int g_server_depth;extern RD_BOOL g_bitmap_cache;extern RD_BOOL g_bitmap_cache_persist_enable;extern RD_BOOL g_bitmap_cache_precache;int g_pstcache_fd[8];int g_pstcache_Bpp;RD_BOOL g_pstcache_enumerated = False;uint8 zero_key[] = { 0, 0, 0, 0, 0, 0, 0, 0 };/* Update mru stamp/index for a bitmap */voidpstcache_touch_bitmap(uint8 cache_id, uint16 cache_idx, uint32 stamp){	int fd;	if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)		return;	fd = g_pstcache_fd[cache_id];	rd_lseek_file(fd, 12 + cache_idx * (g_pstcache_Bpp * MAX_CELL_SIZE + sizeof(CELLHEADER)));	rd_write_file(fd, &stamp, sizeof(stamp));}/* Load a bitmap from the persistent cache */RD_BOOLpstcache_load_bitmap(uint8 cache_id, uint16 cache_idx){	uint8 *celldata;	int fd;	CELLHEADER cellhdr;	RD_HBITMAP bitmap;	if (!g_bitmap_cache_persist_enable)		return False;	if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)		return False;	fd = g_pstcache_fd[cache_id];	rd_lseek_file(fd, cache_idx * (g_pstcache_Bpp * MAX_CELL_SIZE + sizeof(CELLHEADER)));	rd_read_file(fd, &cellhdr, sizeof(CELLHEADER));	celldata = (uint8 *) xmalloc(cellhdr.length);	rd_read_file(fd, celldata, cellhdr.length);	bitmap = ui_create_bitmap(cellhdr.width, cellhdr.height, celldata);	DEBUG(("Load bitmap from disk: id=%d, idx=%d, bmp=0x%x)\n", cache_id, cache_idx, bitmap));	cache_put_bitmap(cache_id, cache_idx, bitmap);	xfree(celldata);	return True;}/* Store a bitmap in the persistent cache */RD_BOOLpstcache_save_bitmap(uint8 cache_id, uint16 cache_idx, uint8 * key,		     uint8 width, uint8 height, uint16 length, uint8 * data){	int fd;	CELLHEADER cellhdr;	if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS)		return False;	memcpy(cellhdr.key, key, sizeof(HASH_KEY));	cellhdr.width = width;	cellhdr.height = height;	cellhdr.length = length;	cellhdr.stamp = 0;	fd = g_pstcache_fd[cache_id];	rd_lseek_file(fd, cache_idx * (g_pstcache_Bpp * MAX_CELL_SIZE + sizeof(CELLHEADER)));	rd_write_file(fd, &cellhdr, sizeof(CELLHEADER));	rd_write_file(fd, data, length);	return True;}/* List the bitmap keys from the persistent cache file */intpstcache_enumerate(uint8 id, HASH_KEY * keylist){	int fd, n;	uint16 idx;	sint16 mru_idx[0xa00];	uint32 mru_stamp[0xa00];	CELLHEADER cellhdr;	if (!(g_bitmap_cache && g_bitmap_cache_persist_enable && IS_PERSISTENT(id)))		return 0;	/* The server disconnects if the bitmap cache content is sent more than once */	if (g_pstcache_enumerated)		return 0;	DEBUG_RDP5(("Persistent bitmap cache enumeration... "));	for (idx = 0; idx < BMPCACHE2_NUM_PSTCELLS; idx++)	{		fd = g_pstcache_fd[id];		rd_lseek_file(fd, idx * (g_pstcache_Bpp * MAX_CELL_SIZE + sizeof(CELLHEADER)));		if (rd_read_file(fd, &cellhdr, sizeof(CELLHEADER)) <= 0)			break;		if (memcmp(cellhdr.key, zero_key, sizeof(HASH_KEY)) != 0)		{			memcpy(keylist[idx], cellhdr.key, sizeof(HASH_KEY));			/* Pre-cache (not possible for 8 bit colour depth cause it needs a colourmap) */			if (g_bitmap_cache_precache && cellhdr.stamp && g_server_depth > 8)				pstcache_load_bitmap(id, idx);			/* Sort by stamp */			for (n = idx; n > 0 && cellhdr.stamp < mru_stamp[n - 1]; n--)			{				mru_idx[n] = mru_idx[n - 1];				mru_stamp[n] = mru_stamp[n - 1];			}			mru_idx[n] = idx;			mru_stamp[n] = cellhdr.stamp;		}		else		{			break;		}	}	DEBUG_RDP5(("%d cached bitmaps.\n", idx));	cache_rebuild_bmpcache_linked_list(id, mru_idx, idx);	g_pstcache_enumerated = True;	return idx;}/* initialise the persistent bitmap cache */RD_BOOLpstcache_init(uint8 cache_id){	int fd;	char filename[256];	if (g_pstcache_enumerated)		return True;	g_pstcache_fd[cache_id] = 0;	if (!(g_bitmap_cache && g_bitmap_cache_persist_enable))		return False;	if (!rd_pstcache_mkdir())	{		DEBUG(("failed to get/make cache directory!\n"));		return False;	}	g_pstcache_Bpp = (g_server_depth + 7) / 8;	sprintf(filename, "cache/pstcache_%d_%d", cache_id, g_pstcache_Bpp);	DEBUG(("persistent bitmap cache file: %s\n", filename));	fd = rd_open_file(filename);	if (fd == -1)		return False;	if (!rd_lock_file(fd, 0, 0))	{		warning("Persistent bitmap caching is disabled. (The file is already in use)\n");		rd_close_file(fd);		return False;	}	g_pstcache_fd[cache_id] = fd;	return True;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文一区在线播放| 久久综合999| 91色.com| 99v久久综合狠狠综合久久| 成人精品国产福利| 99久久精品国产一区二区三区| 成人丝袜18视频在线观看| 成人手机电影网| 99riav久久精品riav| 一本大道综合伊人精品热热| 一本到一区二区三区| 在线电影一区二区三区| 91麻豆精品国产自产在线观看一区| 制服丝袜国产精品| 久久精品一区二区三区不卡牛牛| 国产欧美精品一区二区色综合| 中文字幕亚洲电影| 亚洲国产精品自拍| 久久er99热精品一区二区| 成人综合婷婷国产精品久久| 91视频xxxx| 欧美高清视频在线高清观看mv色露露十八| 日韩一级欧美一级| 中文字幕制服丝袜一区二区三区 | 欧美无人高清视频在线观看| 欧美人牲a欧美精品| 精品国产伦一区二区三区观看方式 | 欧美性生活一区| 日韩欧美在线一区二区三区| 国产精品福利一区| 日韩高清在线电影| 99精品久久99久久久久| 91麻豆精品国产91久久久使用方法| 久久久精品国产99久久精品芒果| 亚洲精品视频自拍| 国产乱码一区二区三区| 精品视频1区2区| 国产精品网站一区| 日精品一区二区| 成人a区在线观看| 日韩一级大片在线| 亚洲一二三区在线观看| 粉嫩嫩av羞羞动漫久久久 | 国产精品一区一区三区| 欧美日韩综合一区| 国产精品天干天干在线综合| 午夜av区久久| 色域天天综合网| 国产日产欧美一区二区视频| 麻豆精品新av中文字幕| 在线观看视频欧美| 国产精品精品国产色婷婷| 久久精品国产99国产| 欧美亚洲免费在线一区| 亚洲欧美自拍偷拍| 国产高清成人在线| 欧美精品一区二区三区蜜桃| 秋霞电影网一区二区| 欧美日韩一区视频| 亚洲资源在线观看| 成人高清免费在线播放| 日本一区二区视频在线| 国产一区激情在线| 久久综合九色综合欧美亚洲| 蜜桃视频第一区免费观看| 777久久久精品| 日韩精品欧美精品| 91精品国产色综合久久ai换脸| 亚洲国产精品自拍| 91.麻豆视频| 日韩国产在线观看一区| 91精品国产综合久久久久久久| 午夜视频一区二区| 欧美一级片免费看| 九一九一国产精品| 欧美精品一区二区在线观看| 激情欧美一区二区三区在线观看| 精品伦理精品一区| 国产乱对白刺激视频不卡| 久久综合一区二区| 国产成人精品亚洲日本在线桃色| 久久久影院官网| 成人性生交大合| 亚洲区小说区图片区qvod| 在线视频综合导航| 日韩精品欧美成人高清一区二区| 欧美一二三四区在线| 五月天一区二区三区| 91精品午夜视频| 国产麻豆视频一区| 最好看的中文字幕久久| 欧美亚洲国产一区在线观看网站| 日韩精品久久久久久| 久久综合色之久久综合| 成人sese在线| 丝袜美腿亚洲综合| 国产亚洲精品福利| 色综合久久久久久久| 水野朝阳av一区二区三区| 精品乱码亚洲一区二区不卡| 成人性色生活片免费看爆迷你毛片| 亚洲免费高清视频在线| 欧美一二三四在线| av在线不卡观看免费观看| 日韩精品一二三四| 中文字幕中文字幕在线一区| 91精品国产综合久久久久久久| 激情五月激情综合网| 亚洲乱码国产乱码精品精的特点| 91精品国产色综合久久ai换脸| 成人三级伦理片| 日韩主播视频在线| 亚洲欧洲精品一区二区三区不卡| 91超碰这里只有精品国产| av激情综合网| 韩国欧美国产1区| 亚洲第一久久影院| 国产精品色婷婷久久58| 欧美一级二级在线观看| 色狠狠av一区二区三区| 成人妖精视频yjsp地址| 麻豆成人免费电影| 亚洲一区二区视频| 国产精品视频第一区| 26uuu国产日韩综合| 欧美久久久久久久久| av电影在线观看不卡| 国产福利不卡视频| 老色鬼精品视频在线观看播放| 色国产综合视频| 久久久久国产精品免费免费搜索| 色综合久久综合中文综合网| 美女视频黄免费的久久| 91在线视频播放地址| 国产老妇另类xxxxx| 国产精品乱人伦中文| 成人免费福利片| 成人开心网精品视频| 国产精一区二区三区| 久久99精品一区二区三区三区| 日韩免费电影一区| 久久亚洲二区三区| 在线综合视频播放| 欧美一区二区三级| 福利一区二区在线| 国产精品国产三级国产aⅴ中文| 国产91清纯白嫩初高中在线观看 | 香蕉久久夜色精品国产使用方法| 亚洲一区二区三区在线| 一区二区三区免费网站| 中文字幕国产一区| 亚洲女爱视频在线| 欧美日韩精品福利| 欧美三级视频在线播放| 美女在线观看视频一区二区| 捆绑变态av一区二区三区| 九九国产精品视频| 丝袜美腿成人在线| 免费人成精品欧美精品| 欧美成人在线直播| 欧美日韩精品一区二区三区| 欧美高清精品3d| 国产精品无码永久免费888| 国产欧美一二三区| 91色婷婷久久久久合中文| aaa欧美色吧激情视频| 国产精品成人在线观看| 欧美系列亚洲系列| 亚洲五月六月丁香激情| 石原莉奈在线亚洲三区| 日韩激情视频在线观看| 经典一区二区三区| 91精品国产品国语在线不卡| 欧美一区二区三区在线视频 | 麻豆精品国产传媒mv男同| 玖玖九九国产精品| 国产suv精品一区二区三区| av男人天堂一区| 欧美日韩国产系列| 欧美mv和日韩mv国产网站| 国产日韩欧美精品电影三级在线| 亚洲私人黄色宅男| 日本成人在线电影网| 国内精品国产成人| 91官网在线免费观看| 精品日本一线二线三线不卡| 国产精品不卡在线观看| 日韩高清欧美激情| 99久久777色| 日韩一区二区视频| 日韩理论电影院| 国产一区免费电影| 欧美老女人第四色| 国产精品久久久久aaaa樱花 | 成人精品视频一区| 7777精品伊人久久久大香线蕉| 国产目拍亚洲精品99久久精品| 亚洲成a人v欧美综合天堂| 懂色av一区二区三区免费看| 欧美一区二区视频观看视频|