Changeset 5f1d6e


Ignore:
Timestamp:
01/25/12 17:42:41 (4 months ago)
Author:
Micke Prag <micke.prag@…>
Branches:
('master', 'deebf2045e7119c339412580f37a1e653f7d5715')('controller-upgrade', '00f95d22e12d96ef089e0902ef62ae8ce841dc6f')
Children:
bf72debefba5c47023afd5993290995c613e4185
Parents:
c35be687c0ce2285842ccc1521a247b06c284b88
git-author:
Micke Prag <micke.prag@telldus.se>2012-01-25 17:42:41+01:00
git-committer:
Micke Prag <micke.prag@telldus.se>2012-01-25 17:42:41+01:00
Message:

Listen for suspend/resume signals and disconnect all usb-devices. This closes #171

Location:
telldus-core/service
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • telldus-core/service/TelldusMain.cpp

    re2e9ba r5f1d6e  
    3636        data->pid = pid; 
    3737        data->inserted = inserted; 
     38        d->controllerChangeEvent->signal(data); 
     39} 
     40 
     41void TelldusMain::resume() { 
     42        Log::notice("Came back from suspend"); 
     43        ControllerChangeEventData *data = new ControllerChangeEventData; 
     44        data->vid = 0x0; 
     45        data->pid = 0x0; 
     46        data->inserted = true; 
     47        d->controllerChangeEvent->signal(data); 
     48} 
     49 
     50void TelldusMain::suspend() { 
     51        Log::notice("Preparing for suspend"); 
     52        ControllerChangeEventData *data = new ControllerChangeEventData; 
     53        data->vid = 0x0; 
     54        data->pid = 0x0; 
     55        data->inserted = false; 
    3856        d->controllerChangeEvent->signal(data); 
    3957} 
  • telldus-core/service/TelldusMain.h

    r9d9fab r5f1d6e  
    1313        //Thread safe! 
    1414        void deviceInsertedOrRemoved(int vid, int pid, bool inserted); 
     15        void resume(); 
     16        void suspend(); 
    1517 
    1618private: 
  • telldus-core/service/TelldusWinService_win.cpp

    r986240 r5f1d6e  
    4141                        SetServiceStatus( serviceStatusHandle, &serviceStatus ); 
    4242 
     43                        return NO_ERROR; 
     44                case SERVICE_CONTROL_POWEREVENT: 
     45                        if (dwEventType == PBT_APMSUSPEND) { 
     46                                tm->suspend(); 
     47                        } else if (dwEventType == PBT_APMRESUMEAUTOMATIC) { 
     48                                tm->resume(); 
     49                        } 
    4350                        return NO_ERROR; 
    4451        } 
     
    138145                // running 
    139146                instance.serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); 
     147                // Register for power management notification 
     148                instance.serviceStatus.dwControlsAccepted |= SERVICE_ACCEPT_POWEREVENT; 
    140149                instance.serviceStatus.dwCurrentState = SERVICE_RUNNING; 
    141150                SetServiceStatus( instance.serviceStatusHandle, &instance.serviceStatus ); 
Note: See TracChangeset for help on using the changeset viewer.