 update = ->
 	data = @_impl
 
+	if data.pending or not @_effectItem?._visible
+		return
+
 	if data.updatePending
 		data.loops++
 	else
 		data.loops = 0
 
-	if not data.pending and @_effectItem?._visible
-		data.pending = true
-		queue.push @
-
-		unless pending
-			setImmediate updateItems
-			pending = true
+	data.pending = true
+	queue.push @
+
+	unless pending
+		setImmediate updateItems
+		pending = true
 	return
 
 updateSize = ->

		elementsX = new TypedArray.Uint32 maxLen
		elementsY = new TypedArray.Uint32 maxLen
		elementsCell = new TypedArray.Uint32 maxLen

	# tmp vars
	width = height = column = row = x = y = right = rowSpan = maxCell = 0

	# calculate children positions
	for child, i in children
		# omit not visible
		if not child._visible


			if layout._fillWidth and not autoWidth
				child.width = maxColumn - (if margin then margin.horizontal else 0)
			if layout._fillHeight and not autoHeight
				rowsFills[i]++
				rowsFillsSum++
				childHeight = 0

		if column is 0
			x = 0
		else if column + columnSpacing + childWidth + (if margin then margin._left else 0) > maxColumn
			column = 0
			row = height
			x = 0
