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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gdkimage-x11.c

?? linux下電話(huà)本所依賴(lài)的一些圖形庫(kù)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. *//* * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS * file for a list of people on the GTK+ Team.  See the ChangeLog * files for a list of changes.  These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/.  */#include <config.h>#include <stdlib.h>#include <sys/types.h>#if defined (HAVE_IPC_H) && defined (HAVE_SHM_H) && defined (HAVE_XSHM_H)#define USE_SHM#endif#ifdef USE_SHM#include <sys/ipc.h>#include <sys/shm.h>#endif /* USE_SHM */#include <X11/Xlib.h>#include <X11/Xutil.h>#ifdef USE_SHM#include <X11/extensions/XShm.h>#endif /* USE_SHM */#include <errno.h>#include "gdk.h"		/* For gdk_error_trap_* / gdk_flush_* */#include "gdkx.h"#include "gdkimage.h"#include "gdkprivate.h"#include "gdkprivate-x11.h"#include "gdkdisplay-x11.h"#include "gdkscreen-x11.h"#include "gdkalias.h"typedef struct _GdkImagePrivateX11     GdkImagePrivateX11;struct _GdkImagePrivateX11{  XImage *ximage;  GdkScreen *screen;  gpointer x_shm_info;  Pixmap shm_pixmap;};static GList *image_list = NULL;static gpointer parent_class = NULL;static void gdk_x11_image_destroy (GdkImage      *image);static void gdk_image_init        (GdkImage      *image);static void gdk_image_class_init  (GdkImageClass *klass);static void gdk_image_finalize    (GObject       *object);#define PRIVATE_DATA(image) ((GdkImagePrivateX11 *) GDK_IMAGE (image)->windowing_data)GTypegdk_image_get_type (void){  static GType object_type = 0;  if (!object_type)    {      static const GTypeInfo object_info =      {        sizeof (GdkImageClass),        (GBaseInitFunc) NULL,        (GBaseFinalizeFunc) NULL,        (GClassInitFunc) gdk_image_class_init,        NULL,           /* class_finalize */        NULL,           /* class_data */        sizeof (GdkImage),        0,              /* n_preallocs */        (GInstanceInitFunc) gdk_image_init,      };            object_type = g_type_register_static (G_TYPE_OBJECT,                                            "GdkImage",                                            &object_info, 0);    }    return object_type;}static voidgdk_image_init (GdkImage *image){  image->windowing_data = g_new0 (GdkImagePrivateX11, 1);}static voidgdk_image_class_init (GdkImageClass *klass){  GObjectClass *object_class = G_OBJECT_CLASS (klass);  parent_class = g_type_class_peek_parent (klass);  object_class->finalize = gdk_image_finalize;}static voidgdk_image_finalize (GObject *object){  GdkImage *image = GDK_IMAGE (object);  gdk_x11_image_destroy (image);    G_OBJECT_CLASS (parent_class)->finalize (object);}void_gdk_image_exit (void){  GdkImage *image;  while (image_list)    {      image = image_list->data;      gdk_x11_image_destroy (image);    }}/** * gdk_image_new_bitmap: * @visual: the #GdkVisual to use for the image. * @data: the pixel data.  * @width: the width of the image in pixels.  * @height: the height of the image in pixels.  *  * Creates a new #GdkImage with a depth of 1 from the given data. * <warning><para>THIS FUNCTION IS INCREDIBLY BROKEN. The passed-in data must  * be allocated by malloc() (NOT g_malloc()) and will be freed when the  * image is freed.</para></warning> *  * Return value: a new #GdkImage. **/GdkImage *gdk_image_new_bitmap(GdkVisual *visual, gpointer data, gint width, gint height){  Visual *xvisual;  GdkImage *image;  GdkDisplay *display;  GdkImagePrivateX11 *private;    image = g_object_new (gdk_image_get_type (), NULL);  private = PRIVATE_DATA (image);  private->screen = gdk_visual_get_screen (visual);  display = GDK_SCREEN_DISPLAY (private->screen);    image->type = GDK_IMAGE_NORMAL;  image->visual = visual;  image->width = width;  image->height = height;  image->depth = 1;  image->bits_per_pixel = 1;  if (display->closed)    private->ximage = NULL;  else    {      xvisual = ((GdkVisualPrivate*) visual)->xvisual;      private->ximage = XCreateImage (GDK_SCREEN_XDISPLAY (private->screen),				      xvisual, 1, XYBitmap,				      0, NULL, width, height, 8, 0);    }    private->ximage->data = data;  private->ximage->bitmap_bit_order = MSBFirst;  private->ximage->byte_order = MSBFirst;  image->byte_order = MSBFirst;  image->mem =  private->ximage->data;  image->bpl = private->ximage->bytes_per_line;  image->bpp = 1;  return(image);} /* gdk_image_new_bitmap() */void_gdk_windowing_image_init (GdkDisplay *display){  GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);    if (display_x11->use_xshm)    {#ifdef USE_SHM      Display *xdisplay = display_x11->xdisplay;      int major, minor, event_base;      Bool pixmaps;        if (XShmQueryExtension (xdisplay) &&	  XShmQueryVersion (xdisplay, &major, &minor, &pixmaps))	{	  display_x11->have_shm_pixmaps = pixmaps;	  event_base = XShmGetEventBase (xdisplay);	  gdk_x11_register_standard_event_type (display,						event_base, ShmNumberEvents);	}      else#endif /* USE_SHM */	display_x11->use_xshm = FALSE;    }}GdkImage*_gdk_image_new_for_depth (GdkScreen    *screen,			  GdkImageType  type,			  GdkVisual    *visual,			  gint          width,			  gint          height,			  gint          depth){  GdkImage *image;  GdkImagePrivateX11 *private;#ifdef USE_SHM  XShmSegmentInfo *x_shm_info;#endif /* USE_SHM */  Visual *xvisual = NULL;  GdkDisplayX11 *display_x11;  GdkScreenX11 *screen_x11;  g_return_val_if_fail (!visual || GDK_IS_VISUAL (visual), NULL);  g_return_val_if_fail (visual || depth != -1, NULL);  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);    screen_x11 = GDK_SCREEN_X11 (screen);  display_x11 = GDK_DISPLAY_X11 (screen_x11->display);    if (visual)    depth = visual->depth;    switch (type)    {    case GDK_IMAGE_FASTEST:      image = _gdk_image_new_for_depth (screen, GDK_IMAGE_SHARED, 					visual, width, height, depth);      if (!image)	image = _gdk_image_new_for_depth (screen, GDK_IMAGE_NORMAL,					  visual, width, height, depth);      break;    default:      image = g_object_new (gdk_image_get_type (), NULL);            private = PRIVATE_DATA (image);      private->screen = screen;      image->type = type;      image->visual = visual;      image->width = width;      image->height = height;      image->depth = depth;      if (visual)	xvisual = ((GdkVisualPrivate*) visual)->xvisual;      switch (type)	{	case GDK_IMAGE_SHARED:#ifdef USE_SHM	  if (display_x11->use_xshm)	    {	      private->x_shm_info = g_new (XShmSegmentInfo, 1);	      x_shm_info = private->x_shm_info;	      x_shm_info->shmid = -1;	      x_shm_info->shmaddr = (char*) -1;	      private->ximage = XShmCreateImage (screen_x11->xdisplay, xvisual, depth,						 ZPixmap, NULL, x_shm_info, width, height);	      if (private->ximage == NULL)		{		  g_warning ("XShmCreateImage failed");		  display_x11->use_xshm = FALSE;		  		  goto error;		}	      x_shm_info->shmid = shmget (IPC_PRIVATE,					  private->ximage->bytes_per_line * private->ximage->height,					  IPC_CREAT | 0600);	      if (x_shm_info->shmid == -1)		{		  /* EINVAL indicates, most likely, that the segment we asked for		   * is bigger than SHMMAX, so we don't treat it as a permanent		   * error. ENOSPC and ENOMEM may also indicate this, but		   * more likely are permanent errors.		   */		  if (errno != EINVAL)		    {		      g_warning ("shmget failed: error %d (%s)", errno, g_strerror (errno));		      display_x11->use_xshm = FALSE;		    }		  goto error;		}	      x_shm_info->readOnly = False;	      x_shm_info->shmaddr = shmat (x_shm_info->shmid, NULL, 0);	      private->ximage->data = x_shm_info->shmaddr;	      if (x_shm_info->shmaddr == (char*) -1)		{		  g_warning ("shmat failed: error %d (%s)", errno, g_strerror (errno));		  /* Failure in shmat is almost certainly permanent. Most likely error is		   * EMFILE, which would mean that we've exceeded the per-process		   * Shm segment limit.		   */		  display_x11->use_xshm = FALSE;		  goto error;		}	      gdk_error_trap_push ();	      XShmAttach (screen_x11->xdisplay, x_shm_info);	      XSync (screen_x11->xdisplay, False);	      if (gdk_error_trap_pop ())		{		  /* this is the common failure case so omit warning */		  display_x11->use_xshm = FALSE;		  goto error;		}	      	      /* We mark the segment as destroyed so that when	       * the last process detaches, it will be deleted.	       * There is a small possibility of leaking if	       * we die in XShmAttach. In theory, a signal handler	       * could be set up.	       */	      shmctl (x_shm_info->shmid, IPC_RMID, NULL);		      	      if (image)		image_list = g_list_prepend (image_list, image);	    }	  else#endif /* USE_SHM */	    goto error;	  break;	case GDK_IMAGE_NORMAL:	  private->ximage = XCreateImage (screen_x11->xdisplay, xvisual, depth,					  ZPixmap, 0, NULL, width, height, 32, 0);	  /* Use malloc, not g_malloc here, because X will call free()	   * on this data	   */	  private->ximage->data = malloc (private->ximage->bytes_per_line *					  private->ximage->height);	  if (!private->ximage->data)	    goto error;	  break;	case GDK_IMAGE_FASTEST:	  g_assert_not_reached ();	}      if (image)	{	  image->byte_order = (private->ximage->byte_order == LSBFirst) ? GDK_LSB_FIRST : GDK_MSB_FIRST;	  image->mem = private->ximage->data;	  image->bpl = private->ximage->bytes_per_line;	  image->bpp = (private->ximage->bits_per_pixel + 7) / 8;	  image->bits_per_pixel = private->ximage->bits_per_pixel;	}    }  return image; error:  if (private->ximage)    {      XDestroyImage (private->ximage);      private->ximage = NULL;    }#ifdef USE_SHM  if (private->x_shm_info)    {      x_shm_info = private->x_shm_info;            if (x_shm_info->shmaddr != (char *)-1)	shmdt (x_shm_info->shmaddr);      if (x_shm_info->shmid != -1) 	shmctl (x_shm_info->shmid, IPC_RMID, NULL);            g_free (x_shm_info);      private->x_shm_info = NULL;    }#endif /* USE_SHM */  g_object_unref (image);    return NULL;}Pixmap_gdk_x11_image_get_shm_pixmap (GdkImage *image){  GdkImagePrivateX11 *private = PRIVATE_DATA (image);  GdkDisplay *display = GDK_SCREEN_DISPLAY (private->screen);  if (display->closed)    return None;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级中文字| 精品少妇一区二区三区在线视频| 亚洲欧美日韩国产另类专区 | 青草av.久久免费一区| 欧美色视频一区| 亚洲亚洲精品在线观看| 欧美日韩在线观看一区二区| 亚洲国产精品一区二区久久恐怖片| 一本久道久久综合中文字幕| 亚洲日本在线视频观看| 成人免费毛片片v| 亚洲欧美日韩系列| 欧美亚洲免费在线一区| 日韩高清一级片| 日韩欧美国产系列| 国产一区二区三区免费看| 国产欧美日韩久久| 成人在线视频首页| 亚洲乱码日产精品bd| 欧美色网一区二区| 免费观看久久久4p| 日韩免费观看2025年上映的电影| 黄色精品一二区| 中文字幕在线不卡一区| 色偷偷成人一区二区三区91 | 日韩免费观看高清完整版| 国产资源在线一区| 中文字幕乱码久久午夜不卡| 一本色道亚洲精品aⅴ| 亚洲成人免费看| 欧美大片一区二区三区| 国产激情一区二区三区| 亚洲狼人国产精品| 色播五月激情综合网| 日日摸夜夜添夜夜添亚洲女人| 精品国产免费一区二区三区香蕉| 国产盗摄女厕一区二区三区| 亚洲欧美一区二区三区国产精品 | 蜜桃av噜噜一区| 国产欧美日韩激情| 91极品视觉盛宴| 亚洲电影第三页| 精品国产污网站| 91在线视频官网| 日韩专区中文字幕一区二区| 久久久99久久| 欧美性猛交一区二区三区精品| 免费看精品久久片| 国产精品国产三级国产| 精品1区2区3区| 国产伦精品一区二区三区免费| 亚洲视频在线一区| 日韩欧美国产三级| 91蝌蚪porny| 久久精品国产一区二区三区免费看 | 国产老肥熟一区二区三区| 亚洲免费视频中文字幕| 日韩女优制服丝袜电影| 99re热视频精品| 午夜国产精品影院在线观看| 久久你懂得1024| 欧美日韩国产高清一区二区三区 | 亚洲欧美激情视频在线观看一区二区三区 | 91麻豆精品国产91久久久久| 国产成人8x视频一区二区| 亚洲国产精品自拍| 国产清纯白嫩初高生在线观看91 | 色呦呦国产精品| 久久99精品久久久久久国产越南| 亚洲欧美另类久久久精品| 精品国产一区久久| 欧美性色欧美a在线播放| 国产成人精品影视| 亚洲一本大道在线| 国产精品卡一卡二卡三| 欧美成va人片在线观看| 在线看国产日韩| 顶级嫩模精品视频在线看| 日产国产欧美视频一区精品| 亚洲欧美偷拍卡通变态| 欧美精品一区二区高清在线观看 | 日韩国产在线观看一区| 最新欧美精品一区二区三区| 欧美精品一区二区久久久| 欧美日韩一区在线| 99久久久久久| 国产精品亚洲第一| 久久国产尿小便嘘嘘| 午夜精品久久久久久久久| 亚洲色图都市小说| 欧美经典三级视频一区二区三区| 欧美大片顶级少妇| 4438x亚洲最大成人网| 一本久久综合亚洲鲁鲁五月天| 国产精一品亚洲二区在线视频| 日韩av电影免费观看高清完整版| 一二三区精品福利视频| 国产偷国产偷精品高清尤物| 日韩一级成人av| 欧美福利视频一区| 欧美亚洲国产一区二区三区va| 成人精品电影在线观看| 久久99久久99小草精品免视看| 图片区小说区区亚洲影院| 一个色综合av| 亚洲成人7777| 性感美女极品91精品| 丝袜美腿高跟呻吟高潮一区| 日韩成人免费看| 久久精品免费看| 狠狠色狠狠色综合| 国产精品影视在线| 成人一区二区三区在线观看| 高清av一区二区| av电影天堂一区二区在线观看| eeuss鲁片一区二区三区在线观看| 成人中文字幕在线| av福利精品导航| 色狠狠一区二区三区香蕉| 欧美色图片你懂的| 91麻豆精品国产91久久久久| 精品人伦一区二区色婷婷| 精品sm捆绑视频| 国产日韩欧美精品电影三级在线| 中文字幕av一区二区三区高| 亚洲天堂a在线| 亚洲国产成人av好男人在线观看| 日韩成人伦理电影在线观看| 九九精品视频在线看| 岛国精品在线观看| 色综合天天综合| 欧美日韩国产综合一区二区| 欧美一区二区福利视频| 久久久久久99精品| 中文字幕中文字幕中文字幕亚洲无线| 亚洲免费观看高清完整版在线 | 久久精品一区蜜桃臀影院| 欧美高清在线精品一区| 亚洲天天做日日做天天谢日日欢 | 欧美日韩精品福利| 欧美mv日韩mv国产网站| 日本一区二区三区免费乱视频| 亚洲欧洲日本在线| 亚洲国产综合91精品麻豆| 免费观看在线综合色| 国产成a人亚洲精| 91麻豆国产精品久久| 91精品国产综合久久久久久久久久| 欧美电影免费观看高清完整版在| 亚洲国产电影在线观看| 亚洲一区二区三区在线| 精品一区二区三区久久久| 99久久精品免费看国产免费软件| 欧美日韩亚洲国产综合| 久久众筹精品私拍模特| 亚洲精品亚洲人成人网| 日本免费新一区视频| 粉嫩在线一区二区三区视频| 欧美午夜精品一区二区蜜桃| 精品国产区一区| 亚洲摸摸操操av| 久久99精品久久久久久久久久久久| 不卡高清视频专区| 欧美久久久久久久久中文字幕| 久久蜜桃av一区精品变态类天堂 | 麻豆国产一区二区| aaa欧美日韩| 91精品国产免费久久综合| 中文字幕欧美日本乱码一线二线| 亚洲777理论| 成人免费看视频| 欧美一级生活片| 国产精品不卡一区二区三区| 美女一区二区在线观看| 91麻豆产精品久久久久久| 欧美mv和日韩mv国产网站| 亚洲精品成人少妇| 国产综合色产在线精品| 欧美视频自拍偷拍| 久久久激情视频| 亚洲一区二区三区在线播放| 国产91在线观看丝袜| 欧美一级电影网站| 最新日韩av在线| 国产在线不卡一区| 欧美日韩在线免费视频| 国产精品毛片久久久久久久| 美女视频黄频大全不卡视频在线播放| 99久久婷婷国产综合精品电影| 精品国产电影一区二区| 五月婷婷综合在线| 99久久伊人久久99| 26uuu久久综合| 午夜精品视频一区| 色噜噜久久综合| 日本一二三不卡| 久久99精品国产91久久来源| 精品视频一区 二区 三区| 日韩美女啊v在线免费观看| 国产曰批免费观看久久久|