• 大小: 11.43MB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2023-08-04
  • 语言: 其他
  • 标签: libvips  8.9.1  win32-x64  

资源简介

libvips-8.9.1-win32-x64.tar.gz 官网下载下来好像总是丢失文件。需要的话可以用这个

资源截图

代码片段和文件信息

/* Gobject - GLib Type object Parameter and Signal Library
 * Copyright (C) 1998-1999 2000-2001 Tim Janik and Red Hat Inc.
 *
 * 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.1 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 see .
 */

/* WARNING:
 *
 *    This file is INSTALLED and other projects (outside of glib)
 *    #include its contents.
 */

#ifndef __G_object_NOTIFY_QUEUE_H__
#define __G_object_NOTIFY_QUEUE_H__

#include  /* memset */

#include ject.h>

G_BEGIN_DECLS


/* --- typedefs --- */
typedef struct _GobjectNotifyContext          GobjectNotifyContext;
typedef struct _GobjectNotifyQueue            GobjectNotifyQueue;
typedef void (*GobjectNotifyQueueDispatcher) (Gobject     *object
      guint        n_pspecs
      GParamSpec **pspecs);


/* --- structures --- */
struct _GobjectNotifyContext
{
  GQuark                       quark_notify_queue;
  GobjectNotifyQueueDispatcher dispatcher;
  GTrashStack                 *_nqueue_trash; /* unused */
};
struct _GobjectNotifyQueue
{
  GobjectNotifyContext *context;
  GSList               *pspecs;
  guint16               n_pspecs;
  guint16               freeze_count;
};

G_LOCK_DEFINE_STATIC(notify_lock);

/* --- functions --- */
static void
g_object_notify_queue_free (gpointer data)
{
  GobjectNotifyQueue *nqueue = data;

  g_slist_free (nqueue->pspecs);
  g_slice_free (GobjectNotifyQueue nqueue);
}

static inline GobjectNotifyQueue*
g_object_notify_queue_freeze (Gobject    *object
      GobjectNotifyContext *context)
{
  GobjectNotifyQueue *nqueue;

  G_LOCK(notify_lock);
  nqueue = g_datalist_id_get_data (&object->qdata context->quark_notify_queue);
  if (!nqueue)
    {
      nqueue = g_slice_new0 (GobjectNotifyQueue);
      nqueue->context = context;
      g_datalist_id_set_data_full (&object->qdata context->quark_notify_queue
   nqueue g_object_notify_queue_free);
    }

  if (nqueue->freeze_count >= 65535)
    g_critical(“Free queue for %s (%p) is larger than 65535“
               “ called g_object_freeze_notify() too often.“
               “ Forgot to call g_object_thaw_notify() or infinite loop“
               G_object_TYPE_NAME (object) object);
  else
    nqueue->freeze_count++;
  G_UNLOCK(notify_lock);

  return nqueue;
}

static inline void
g_object_notify_queue_thaw (Gobject            *object
    GobjectNotifyQueue *nqueue)
{
  GobjectNotifyContext *context = nqueue->con

评论

共有 条评论