Show
Ignore:
Timestamp:
11/23/09 14:05:19 (14 years ago)
Author:
arnonym
Message:

Looks as if this doesn't break using the old stack. see #240

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/libieee1394/IsoHandler.cpp

    r1535 r1731  
    8585   , m_speed( RAW1394_ISO_SPEED_400 ) 
    8686   , m_prebuffers( 0 ) 
    87    , m_dont_exit_iterate_loop( true ) 
    8887   , m_State( eHS_Stopped ) 
    8988   , m_NextState( eHS_Stopped ) 
     
    421420 
    422421    // iterate the client if required 
    423     if(m_Client) { 
    424         enum raw1394_iso_disposition retval = m_Client->putPacket(data, length, channel, tag, sy, pkt_ctr, dropped_cycles); 
    425         if (retval == RAW1394_ISO_OK) { 
    426             if (m_dont_exit_iterate_loop) { 
    427                 return RAW1394_ISO_OK; 
    428             } else { 
    429                 m_dont_exit_iterate_loop = true; 
    430                 debugOutput(DEBUG_LEVEL_VERBOSE, 
    431                                 "(%p) loop exit requested\n", 
    432                                 this); 
    433                 return RAW1394_ISO_DEFER; 
    434             } 
    435         } else { 
    436             return retval; 
    437         } 
    438     } 
     422    if(m_Client) 
     423        return m_Client->putPacket(data, length, channel, tag, sy, pkt_ctr, dropped_cycles); 
    439424 
    440425    return RAW1394_ISO_OK; 
     
    567552        } 
    568553        #endif 
    569         if (retval == RAW1394_ISO_OK) { 
    570             if (m_dont_exit_iterate_loop) { 
    571                 return RAW1394_ISO_OK; 
    572             } else { 
    573                 m_dont_exit_iterate_loop = true; 
    574                 debugOutput(DEBUG_LEVEL_VERBOSE, 
    575                                 "(%p) loop exit requested\n", 
    576                                 this); 
    577                 return RAW1394_ISO_DEFER; 
    578             } 
    579         } else { 
    580554            return retval; 
    581         } 
    582555    } 
    583556 
  • trunk/libffado/src/libieee1394/IsoHandler.h

    r1531 r1731  
    143143    bool canIterateClient(); // FIXME: implement with functor 
    144144 
    145     /** 
    146      * @brief request that the handler exits the packet processing loop ASAP 
    147      * 
    148      * The raw1394 lib doesn't provide a means to stop the packet iteration loop 
    149      * except when the iterate callback returns a DEFER value. Calling this function 
    150      * will make the callback return DEFER ASAP. 
    151      */ 
    152     void requestIterateLoopExit() {m_dont_exit_iterate_loop = false;}; 
    153     /** 
    154      * @brief allow the handler to stay in the packet processing loop 
    155      * 
    156      * This resets the state set by requestIterateLoopExit() 
    157      */ 
    158     void allowIterateLoop() {m_dont_exit_iterate_loop = true;}; 
    159  
    160145 
    161146    /** 
     
    203188    enum raw1394_iso_speed m_speed; 
    204189    unsigned int m_prebuffers; 
    205     bool m_dont_exit_iterate_loop; 
    206190 
    207191    // the state machine 
  • trunk/libffado/src/libieee1394/IsoHandlerManager.cpp

    r1550 r1731  
    256256                events = POLLIN | POLLPRI; 
    257257                no_one_to_poll = false; 
    258                 // if we are going to poll() it, let's ensure 
    259                 // it can run until someone wants it to exit 
    260                 h->allowIterateLoop(); 
    261258            } 
    262259            m_poll_fds_shadow[i].events = events;