gallery: use timeout function instead of interval
authorMinkyu Kang <mk7.kang@samsung.com>
Thu, 17 Jan 2013 07:58:17 +0000 (16:58 +0900)
committerYoumin Ha <youmin.ha@samsung.com>
Thu, 17 Jan 2013 08:50:22 +0000 (17:50 +0900)
Because of interval function can possible calling infinitely,
use timeout function instead.
And add error checking codes.

Change-Id: I265565a219fe2d1c3a5478411c63ae29a7e4648e

src/widgets/gallery/js/jquery.mobile.tizen.gallery.js

index 1add076..1a930d6 100755 (executable)
                align_type: null,
                direction: 1,
                container: null,
-               loader: [],
 
                _resize: function ( index ) {
                        var img = this.images[index],
                                processing = function () {
                                        self._resize( index );
                                        self._align( index, obj );
+                               },
+                               loading = function () {
+                                       if ( self.images[index] === undefined ) {
+                                               return;
+                                       }
+
+                                       if ( !self.images[index].height() ) {
+                                               setTimeout( loading, 10 );
+                                               return;
+                                       }
+
+                                       processing();
                                };
 
                        if ( !obj ) {
                        if ( index < 0 ) {
                                return;
                        }
+                       if ( !this.images.length ) {
+                               return;
+                       }
                        if ( index >= this.images.length ) {
                                return;
                        }
                        obj.css( "display", "block" );
                        obj.append( this.images[index] );
 
-                       if ( this.images[index].height() ) {
-                               processing();
-                       } else {
-                               this.loader[index] = setInterval( function () {
-                                       if ( !self.images[index].height() ) {
-                                               return;
-                                       }
-
-                                       processing();
-                                       clearInterval( self.loader[index] );
-                               }, 10);
-                       }
+                       loading();
                },
 
                _detach: function ( index, obj ) {
                        obj.css( "display", "none" );
                        this.images[index].removeAttr("style");
                        this.images[index].detach();
-
-                       clearInterval( this.loader[index] );
                },
 
                _detach_all: function () {
                },
 
                show: function () {
+                       if ( !this.images.length ) {
+                               return;
+                       }
+
                        this._show();
                        this._add_event();
                },