浏览代码

Use ufo_filter_get_resource_manager

The singleton method is not available anymore.
Matthias Vogelgesang 11 年之前
父节点
当前提交
3e2e018b04
共有 4 个文件被更改,包括 14 次插入5 次删除
  1. 11 2
      src/ufo-filter-lamino-bp-generic.c
  2. 1 1
      src/ufo-filter-lamino-ft-conv.c
  3. 1 1
      src/ufo-filter-lamino-ramp.c
  4. 1 1
      src/ufo-filter-padding-2d.c

+ 11 - 2
src/ufo-filter-lamino-bp-generic.c

@@ -25,6 +25,7 @@ struct _UfoFilterLaminoBPGenericPrivate {
     cl_mem          param_mem;
     gint            proj_idx;
     CLParameters    params;
+    gboolean        finished;
     size_t          global_work_size[3];
 };
 
@@ -135,7 +136,7 @@ static void
 ufo_filter_lamino_bp_generic_initialize (UfoFilterReduce *filter, UfoBuffer *input[], guint **output_dims, gfloat *default_value, GError **error)
 {
     UfoFilterLaminoBPGenericPrivate *priv = UFO_FILTER_LAMINO_BP_GENERIC_GET_PRIVATE(filter);
-    UfoResourceManager *manager = ufo_resource_manager();
+    UfoResourceManager *manager = ufo_filter_get_resource_manager(UFO_FILTER(filter));
     GError *tmp_error = NULL;
     cl_context context;
     guint width, height;
@@ -253,11 +254,14 @@ ufo_filter_lamino_bp_generic_collect(UfoFilterReduce *filter, UfoBuffer *input[]
     priv->proj_idx++;
 }
 
-static void
+static gboolean
 ufo_filter_lamino_bp_generic_reduce (UfoFilterReduce *filter, UfoBuffer *output[], gpointer cmd_queue, GError **error)
 {
     UfoFilterLaminoBPGenericPrivate *priv = UFO_FILTER_LAMINO_BP_GENERIC_GET_PRIVATE(filter);
 
+    if (priv->finished)
+        return FALSE;
+
     // normalize volume after reconstruction
     cl_kernel norm_vol_kernel = priv->norm_vol_kernel;
     cl_mem output_mem = ufo_buffer_get_device_array (output[0], (cl_command_queue) cmd_queue);
@@ -271,6 +275,10 @@ ufo_filter_lamino_bp_generic_reduce (UfoFilterReduce *filter, UfoBuffer *output[
     g_message("volume post-processing");
     CHECK_OPENCL_ERROR(clEnqueueNDRangeKernel((cl_command_queue) cmd_queue, norm_vol_kernel,
                 vol_num_dims, NULL, priv->global_work_size, NULL, 0, NULL, NULL));
+
+    priv->finished = TRUE;
+
+    return TRUE;
 }
 
 static void
@@ -485,6 +493,7 @@ ufo_filter_lamino_bp_generic_init(UfoFilterLaminoBPGeneric *self)
 
     // initialize parameters here
     self->priv = UFO_FILTER_LAMINO_BP_GENERIC_GET_PRIVATE(self);
+    self->priv->finished = FALSE;
 
     CLParameters * prms = &(self->priv->params);
     prms->theta = 0.0;

+ 1 - 1
src/ufo-filter-lamino-ft-conv.c

@@ -38,7 +38,7 @@ static void
 ufo_filter_lamino_ft_conv_initialize (UfoFilter *filter, UfoBuffer *params[], guint **dim_sizes, GError **error)
 {
     UfoFilterLaminoFTConvPrivate *priv = UFO_FILTER_LAMINO_FT_CONV_GET_PRIVATE (filter);
-    UfoResourceManager *manager = ufo_resource_manager ();
+    UfoResourceManager *manager = ufo_filter_get_resource_manager (filter);
     guint f_width, f_height;
     GError *tmp_error = NULL;
 

+ 1 - 1
src/ufo-filter-lamino-ramp.c

@@ -57,7 +57,7 @@ static void
 ufo_filter_lamino_ramp_initialize (UfoFilterSource *filter, guint **dim_sizes, GError **error)
 {
     UfoFilterLaminoRampPrivate *priv = UFO_FILTER_LAMINO_RAMP_GET_PRIVATE(filter);
-    UfoResourceManager *manager = ufo_resource_manager();
+    UfoResourceManager *manager = ufo_filter_get_resource_manager(UFO_FILTER(filter));
     GError *tmp_error = NULL;
 
     priv->kernel_cf = ufo_resource_manager_get_kernel(manager, "lamino_ramp.cl", "lamino_ramp_create_filter", &tmp_error);

+ 1 - 1
src/ufo-filter-padding-2d.c

@@ -72,7 +72,7 @@ static void
 ufo_filter_padding_2d_initialize (UfoFilter *filter, UfoBuffer *params[], guint **dim_sizes, GError **error)
 {
     UfoFilterPadding2DPrivate *priv = UFO_FILTER_PADDING_2D_GET_PRIVATE(filter);
-    UfoResourceManager *manager = ufo_resource_manager();
+    UfoResourceManager *manager = ufo_filter_get_resource_manager(filter);
     GError *tmp_error = NULL;
 
     priv->kernel_iconst = ufo_resource_manager_get_kernel(manager, "padding_2d.cl", "padding_2d_init_const", &tmp_error);