Example #1
0
void Control::SetParent(Control *newParent)
{
    HwndWrapper *prevRoot = NULL;
    if (parent)
        prevRoot = GetRootHwndWnd(parent);
    HwndWrapper *newRoot = GetRootHwndWnd(newParent);
    CrashIf(!newRoot);

    parent = newParent;

    if (prevRoot)
        UnRegisterEventHandlers(prevRoot->evtMgr);

    RegisterEventHandlers(newRoot->evtMgr);
}
Example #2
0
int main(int argc, char* argv[])
{
    bool daemonize = true;
    bool useICY = false;
    char* ipaddr = NULL;
    int port = 0;
    char* config = NULL;
    char* playList = NULL;
    char* workingDir = NULL;
    char ch;
    bool preflight = false;
    bool checkMP3s = false;
    char*   errorlog = NULL;
//    extern int optind;
    extern char* optarg;
    
#ifdef __Win32__        
    //
    // Start Win32 DLLs
    WORD wsVersion = MAKEWORD(1, 1);
    WSADATA wsData;
    (void)::WSAStartup(wsVersion, &wsData);
#endif

    OS::Initialize();
    OSThread::Initialize();
    OSMemory::SetMemoryError(ENOMEM);
    Socket::Initialize();
    SocketUtils::Initialize(false);
    
    if (SocketUtils::GetNumIPAddrs() == 0)
    {
        qtss_printf("Network initialization failed. IP must be enabled to run MP3Broadcaster\n");
        ::exit(0);
    }

    while ( (ch = getopt(argc,argv, "vdixXa:p:c:l:e:w:")) != EOF ) // opt: means requires option
    {
        switch(ch)
        {
            case 'v':
                ::version();
                ::usage();
                return 0;
                
            case 'd':
                daemonize = false;
                break;
                
            case 'i':
                useICY = true;
                break;
                
            case 'a':
                ipaddr = (char*)malloc(strlen(optarg)+1);
                strcpy(ipaddr, optarg);
                break;
                
            case 'p':
                port = atoi(optarg);
                break;
                
            case 'c':
                config = (char*)malloc(strlen(optarg)+1);
                strcpy(config, optarg);
                break;
                
            case 'l':
                playList = (char*)malloc(strlen(optarg)+1);
                strcpy(playList, optarg);
                break;
                
            case 'w':
                workingDir = (char*)malloc(strlen(optarg)+1);
                break;
                
            case 'x':
                preflight = true;
                daemonize = false;
                break;
                
            case 'X':
                preflight = true;
                daemonize = false;
                checkMP3s = true;
                break;
                
            case 'e':
                errorlog = (char*)malloc(strlen(optarg)+1);
                strcpy(errorlog, optarg);
                break;
                
            default:
                ::usage();
                return 0;
        }
    }

    if (config == NULL)
    {
        qtss_printf("missing -c option\n");
        ::usage();
        return 0;
    }
    
    if (errorlog != NULL)
    {   
                if (preflight)
                    freopen(errorlog, "w", stdout);
                else
                    freopen(errorlog, "a", stdout);
        ::setvbuf(stdout, (char *)NULL, _IONBF, 0);
    }
        
    gBroadcaster = new MP3Broadcaster(ipaddr, port, config, playList, workingDir, useICY);

    if (!gBroadcaster->IsValid())
    {
        qtss_printf("Bad config--exiting\n");
        qtss_printf("Warnings: 0\nErrors: 1\n");
        return 0;
    }
    
    RegisterEventHandlers();
    gBroadcaster->PreFlightOrBroadcast(preflight, daemonize, false, false, checkMP3s, errorlog);

	return 0;
}