Ejemplo n.º 1
0
GeglConfig *gegl_config (void)
{
  if (!config)
    {
      config = g_object_new (GEGL_TYPE_CONFIG, NULL);
      if (g_getenv ("GEGL_QUALITY"))
        config->quality = atof(g_getenv("GEGL_QUALITY"));
      if (g_getenv ("GEGL_CACHE_SIZE"))
        config->cache_size = atoi(g_getenv("GEGL_CACHE_SIZE"))* 1024*1024;
      if (g_getenv ("GEGL_CHUNK_SIZE"))
        config->chunk_size = atoi(g_getenv("GEGL_CHUNK_SIZE"));
      if (g_getenv ("GEGL_TILE_SIZE"))
        {
          const gchar *str = g_getenv ("GEGL_TILE_SIZE");
          config->tile_width = atoi(str);
          str = strchr (str, 'x');
          if (str)
            config->tile_height = atoi(str+1);
        }
      if (g_getenv ("GEGL_THREADS"))
        {
          config->threads = atoi(g_getenv("GEGL_THREADS"));
          if (config->threads > GEGL_MAX_THREADS)
            {
              g_warning ("Tried to use %i threads max is %i",
                         config->threads, GEGL_MAX_THREADS);
              config->threads = GEGL_MAX_THREADS;
            }
        }
      if (gegl_swap_dir())
        config->swap = g_strdup(gegl_swap_dir ());
    }
  return GEGL_CONFIG (config);
}
Ejemplo n.º 2
0
static void
gegl_config_use_opencl_notify (GObject    *gobject,
                               GParamSpec *pspec,
                               gpointer    user_data)
{
  GeglConfig *cfg = GEGL_CONFIG (gobject);

  g_signal_handlers_block_by_func (gobject,
                                   gegl_config_use_opencl_notify,
                                   NULL);

  if (cfg->use_opencl)
    {
       gegl_cl_init (NULL);
    }
  else
    {
      gegl_cl_disable ();
    }

  cfg->use_opencl = gegl_cl_is_accelerated();

  g_signal_handlers_unblock_by_func (gobject,
                                     gegl_config_use_opencl_notify,
                                     NULL);
}
Ejemplo n.º 3
0
static void
gegl_config_application_license_notify (GObject    *gobject,
                                        GParamSpec *pspec,
                                        gpointer    user_data)
{
  GeglConfig *cfg = GEGL_CONFIG (gobject);

  gegl_operations_set_licenses_from_string (cfg->application_license);
}
Ejemplo n.º 4
0
static void
gegl_config_finalize (GObject *gobject)
{
  GeglConfig *config = GEGL_CONFIG (gobject);

  if (config->swap)
    g_free (config->swap);

  G_OBJECT_CLASS (gegl_config_parent_class)->finalize (gobject);
}
Ejemplo n.º 5
0
static void
gegl_config_get_property (GObject    *gobject,
                          guint       property_id,
                          GValue     *value,
                          GParamSpec *pspec)
{
  GeglConfig *config = GEGL_CONFIG (gobject);

  switch (property_id)
    {
      case PROP_TILE_CACHE_SIZE:
        g_value_set_uint64 (value, config->tile_cache_size);
        break;

      case PROP_CHUNK_SIZE:
        g_value_set_int (value, config->chunk_size);
        break;

      case PROP_TILE_WIDTH:
        g_value_set_int (value, config->tile_width);
        break;

      case PROP_TILE_HEIGHT:
        g_value_set_int (value, config->tile_height);
        break;

      case PROP_QUALITY:
        g_value_set_double (value, config->quality);
        break;

      case PROP_BABL_TOLERANCE:
        g_value_set_double (value, config->babl_tolerance);
        break;

      case PROP_SWAP:
        g_value_set_string (value, config->swap);
        break;

      case PROP_THREADS:
        g_value_set_int (value, config->threads);
        break;

      case PROP_USE_OPENCL:
        g_value_set_boolean (value, gegl_cl_is_accelerated());
        break;

      case PROP_QUEUE_SIZE:
        g_value_set_int (value, config->queue_size);
        break;

      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, pspec);
        break;
    }
}
Ejemplo n.º 6
0
static void
gegl_config_set_property (GObject      *gobject,
                          guint         property_id,
                          const GValue *value,
                          GParamSpec   *pspec)
{
    GeglConfig *config = GEGL_CONFIG (gobject);

    switch (property_id)
    {
    case PROP_TILE_CACHE_SIZE:
        config->tile_cache_size = g_value_get_uint64 (value);
        break;
    case PROP_CHUNK_SIZE:
        config->chunk_size = g_value_get_int (value);
        break;
    case PROP_TILE_WIDTH:
        config->tile_width = g_value_get_int (value);
        break;
    case PROP_TILE_HEIGHT:
        config->tile_height = g_value_get_int (value);
        break;
    case PROP_QUALITY:
        config->quality = g_value_get_double (value);
        return;
    case PROP_SWAP:
        if (config->swap)
            g_free (config->swap);
        config->swap = g_value_dup_string (value);
        break;
    case PROP_THREADS:
        _gegl_threads = g_value_get_int (value);
        return;
    case PROP_USE_OPENCL:
        config->use_opencl = g_value_get_boolean (value);
        break;
    case PROP_QUEUE_SIZE:
        config->queue_size = g_value_get_int (value);
        break;
    case PROP_APPLICATION_LICENSE:
        if (config->application_license)
            g_free (config->application_license);
        config->application_license = g_value_dup_string (value);
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, pspec);
        break;
    }
}
Ejemplo n.º 7
0
static void
gegl_config_set_property (GObject      *gobject,
                          guint         property_id,
                          const GValue *value,
                          GParamSpec   *pspec)
{
  GeglConfig *config = GEGL_CONFIG (gobject);

  switch (property_id)
    {
      case PROP_CACHE_SIZE:
        config->cache_size = g_value_get_int (value);
        break;
      case PROP_CHUNK_SIZE:
        config->chunk_size = g_value_get_int (value);
        break;
      case PROP_TILE_WIDTH:
        config->tile_width = g_value_get_int (value);
        break;
      case PROP_TILE_HEIGHT:
        config->tile_height = g_value_get_int (value);
        break;
      case PROP_QUALITY:
        config->quality = g_value_get_double (value);
        return;
      case PROP_BABL_TOLERANCE:
          {
            static gboolean first = TRUE;
            static gboolean overridden = FALSE;

            gchar buf[256];

            if (first)
              {
                if (g_getenv ("BABL_TOLERANCE") != NULL)
                  overridden = TRUE;
                first = FALSE;
              }
            if (!overridden)
              {
                config->babl_tolerance = g_value_get_double (value);
                g_sprintf (buf, "%f", config->babl_tolerance);
                g_setenv ("BABL_TOLERANCE", buf, 0);
                /* babl picks up the babl error through the environment, babl
                 * caches valid conversions though so this needs to be set
                 * before any processing is done
                 */
              }
          }
        return;
      case PROP_SWAP:
        if (config->swap)
         g_free (config->swap);
        config->swap = g_value_dup_string (value);
        break;
      case PROP_THREADS:
        config->threads = g_value_get_int (value);
        return;
      case PROP_USE_OPENCL:
        config->use_opencl = g_value_get_boolean (value);

        if (config->use_opencl)
          gegl_cl_init (NULL);

        break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, pspec);
        break;
    }
}