[cheese/three-point-oh] remove incompatible return type warning



commit 97bb69dc457806594adc187fd3e8fe0d172f7e33
Author: daniel g. siegel <dgsiegel gnome org>
Date:   Thu Jul 1 20:59:13 2010 +0200

    remove incompatible return type warning
    
    the ? symbol after the return type makes it able to return
    null in a function. did that in the effects manager class

 src/cheese-effects-manager.vala |   40 +++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 8 deletions(-)
---
diff --git a/src/cheese-effects-manager.vala b/src/cheese-effects-manager.vala
index 033fcc7..baac0aa 100644
--- a/src/cheese-effects-manager.vala
+++ b/src/cheese-effects-manager.vala
@@ -5,27 +5,51 @@ const string GROUP_NAME = "effect";
 
 internal class Cheese.EffectsManager : GLib.Object
 {
-  public static Cheese.Effect parse_effect_file (string filename)
+  public static Cheese.Effect ? parse_effect_file (string filename)
   {
     KeyFile kf = new KeyFile ();
-
-    kf.load_from_file (filename, KeyFileFlags.NONE);
     Effect eff = new Effect ();
-    eff.name = kf.get_string (GROUP_NAME, "name");
-    eff.pipeline_desc = kf.get_string (GROUP_NAME, "pipeline_desc");
+
+    try
+    {
+      kf.load_from_file (filename, KeyFileFlags.NONE);
+      eff.name          = kf.get_string (GROUP_NAME, "name");
+      eff.pipeline_desc = kf.get_string (GROUP_NAME, "pipeline_desc");
+    }
+    catch (KeyFileError err)
+    {
+      warning ("Error: %s\n", err.message);
+      return null;
+    }
+    catch (FileError err)
+    {
+      warning ("Error: %s\n", err.message);
+      return null;
+    }
+
     critical ("%s", eff.pipeline_desc);
     return eff;
   }
 
   public ArrayList<Effect> effects;
 
-  private ArrayList<Effect> load_effects_from_directory (string directory)
+  private ArrayList<Effect> ? load_effects_from_directory (string directory)
   {
     ArrayList<Effect> effects = new ArrayList<Effect>();
     if (FileUtils.test (directory, FileTest.EXISTS | FileTest.IS_DIR))
     {
-      Dir    dir = Dir.open (directory);
+      Dir dir;
       string cur_file;
+      try
+      {
+        dir = Dir.open (directory);
+      }
+      catch (FileError err)
+      {
+        warning ("Error: %s\n", err.message);
+        return null;
+      }
+
 
       cur_file = dir.read_name ();
       while (cur_file != null)
@@ -53,7 +77,7 @@ internal class Cheese.EffectsManager : GLib.Object
     effects.add_all (load_effects_from_directory (user_effects));
   }
 
-  public Effect get_effect (string name)
+  public Effect ? get_effect (string name)
   {
     foreach (Effect eff in effects)
     {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]