Moved check to skip next DMO read inside loop. This is subtle but it guarantees GetNextBuffer will return when no data is available. This fixes a major performance issue as we were basically spinning waiting for new data before.