View | Details | Raw Unified | Return to bug 293428
Collapse All | Expand All

(-)zypp/MediaSetAccess.cc (-31 / +3 lines)
Lines 166-182 Link Here
166
          else if ( user == media::MediaChangeReport::EJECT )
166
          else if ( user == media::MediaChangeReport::EJECT )
167
          {
167
          {
168
            DBG << "Eject: try to release" << endl;
168
            DBG << "Eject: try to release" << endl;
169
            try
169
            media_mgr.releaseAll();
170
            {
171
              //zypp::SourceManager::sourceManager()->releaseAllSources();
172
            }
173
            catch (const zypp::Exception& excpt_r)
174
            {
175
              ZYPP_CAUGHT(excpt_r);
176
              ERR << "Failed to release all sources" << endl;
177
            }
178
            media_mgr.release (media, true); // one more release needed for eject
170
            media_mgr.release (media, true); // one more release needed for eject
179
            // FIXME: this will not work, probably
180
          }
171
          }
181
          else if ( user == media::MediaChangeReport::RETRY  ||
172
          else if ( user == media::MediaChangeReport::RETRY  ||
182
            user == media::MediaChangeReport::CHANGE_URL )
173
            user == media::MediaChangeReport::CHANGE_URL )
Lines 283-299 Link Here
283
          else if ( user == media::MediaChangeReport::EJECT )
274
          else if ( user == media::MediaChangeReport::EJECT )
284
          {
275
          {
285
            DBG << "Eject: try to release" << endl;
276
            DBG << "Eject: try to release" << endl;
286
            try
277
            media_mgr.releaseAll();
287
            {
288
              //zypp::SourceManager::sourceManager()->releaseAllSources();
289
            }
290
            catch (const zypp::Exception& excpt_r)
291
            {
292
              ZYPP_CAUGHT(excpt_r);
293
              ERR << "Failed to release all sources" << endl;
294
            }
295
            media_mgr.release (media, true); // one more release needed for eject
278
            media_mgr.release (media, true); // one more release needed for eject
296
            // FIXME: this will not work, probably
297
          }
279
          }
298
          else if ( user == media::MediaChangeReport::RETRY  ||
280
          else if ( user == media::MediaChangeReport::RETRY  ||
299
            user == media::MediaChangeReport::CHANGE_URL )
281
            user == media::MediaChangeReport::CHANGE_URL )
Lines 414-431 Link Here
414
          else if (user == media::MediaChangeReport::EJECT)
396
          else if (user == media::MediaChangeReport::EJECT)
415
          {
397
          {
416
            DBG << "Eject: try to release" << endl;
398
            DBG << "Eject: try to release" << endl;
417
            try
399
            media_mgr.releaseAll();
418
            {
419
              //! \todo do we need replacement for this at all?
420
              // zypp::SourceManager::sourceManager()->releaseAllSources();
421
            }
422
            catch (const zypp::Exception& excpt_r)
423
            {
424
              ZYPP_CAUGHT(excpt_r);
425
              ERR << "Failed to release all sources" << endl;
426
            }
427
            media_mgr.release (_media, true); // one more release needed for eject
400
            media_mgr.release (_media, true); // one more release needed for eject
428
            // FIXME: this will not work, probably
429
          }
401
          }
430
          else if (user == media::MediaChangeReport::RETRY ||
402
          else if (user == media::MediaChangeReport::RETRY ||
431
              user == media::MediaChangeReport::CHANGE_URL)
403
              user == media::MediaChangeReport::CHANGE_URL)
(-)zypp/media/MediaManager.h (+6 lines)
Lines 603-608 Link Here
603
      release(MediaAccessId accessId, bool eject = false);
603
      release(MediaAccessId accessId, bool eject = false);
604
604
605
      /**
605
      /**
606
       * Release all attached media.
607
       */
608
      void
609
      releaseAll();
610
611
      /**
606
       * Disconnect a remote media.
612
       * Disconnect a remote media.
607
       *
613
       *
608
       * This is useful for media which e.g. holds open a connection
614
       * This is useful for media which e.g. holds open a connection
(-)zypp/media/MediaManager.cc (+37 lines)
Lines 685-690 Link Here
685
685
686
    // ---------------------------------------------------------------
686
    // ---------------------------------------------------------------
687
    void
687
    void
688
    MediaManager::releaseAll()
689
    {
690
      MutexLock glock(g_Mutex);
691
692
      MIL << "Releasing all attached media" << std::endl;
693
694
      ManagedMediaMap::iterator m(m_impl->mediaMap.begin());
695
      for( ; m != m_impl->mediaMap.end(); ++m)
696
      {
697
        if( m->second.handler->dependsOnParent())
698
          continue;
699
700
        try
701
        {
702
          if(m->second.handler->isAttached())
703
          {
704
            DBG << "Releasing media id " << m->first << std::endl;
705
            m->second.desired  = false;
706
            m->second.handler->release(false);
707
          }
708
          else
709
          {
710
            DBG << "Media id " << m->first << " not attached " << std::endl;
711
          }
712
        }
713
        catch(const MediaException & e)
714
        {
715
          ZYPP_CAUGHT(e);
716
          ERR << "Failed to release media id " << m->first << std::endl;
717
        }
718
      }
719
720
      MIL << "Exit" << std::endl;
721
    }
722
723
    // ---------------------------------------------------------------
724
    void
688
    MediaManager::disconnect(MediaAccessId accessId)
725
    MediaManager::disconnect(MediaAccessId accessId)
689
    {
726
    {
690
      MutexLock glock(g_Mutex);
727
      MutexLock glock(g_Mutex);

Return to bug 293428