srv_ies_job_handle srv_ies_job_create(srv_ies_app_session_handle        hApp,
                                      module_type                       modID,
                                      SRV_IES_JOB_TYPE_ENUM             jobType,
                                      void                              *pOwner,
                                      void                              *pInput,
                                      CTIterator                        *pItr,
                                      void                              *pOutput,
                                      kal_uint32                        maxStep,
                                      srv_ies_async_callback_func_ptr   callback,
                                      void                              *pData)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    srv_ies_job *pJob;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_take_mutex(g_srv_ies_hdl_mutex);
    TYPED_ALLOC(pJob, srv_ies_job);
    g_srv_ies_curr_job[pJob->jobID] = pJob;
    kal_give_mutex(g_srv_ies_hdl_mutex);

    ASSERT(NULL != pJob);

    switch(jobType)
    {
        case SRV_IES_JOB_TYPE_RENDER_PREVIEW:
        case SRV_IES_JOB_TYPE_RENDER_BUFFER:
        case SRV_IES_JOB_TYPE_CREATE_META:
            pJob->pOutput = pOutput;
            break;
        case SRV_IES_JOB_TYPE_RENDER_FILE:
            ASSERT(NULL != pInput);
            mmi_wcsncpy(pJob->filePath, pOutput, SRV_FMGR_PATH_MAX_LEN);
            break;
        default:
            ASSERT(0);
            return NULL;
    }

    LIST_INIT((srv_ies_list_head_struct*)pJob);

    ((srv_ies_job_control*)pOwner)->pCurrJob = pJob;

    pJob->pParent   = hApp;
    pJob->state     = SRV_IES_JOB_STATE_CREATED;
    pJob->modID     = kal_get_active_module_id();
    pJob->jobType   = jobType;
    pJob->seqNum    = srv_ies_job_request_seq_num();
    pJob->pOwner    = pOwner;
    pJob->pItr      = pItr;
    pJob->pInput    = pInput;
    pJob->maxStep   = maxStep;
    pJob->callback  = callback;
    pJob->pData     = pData;

    return pJob;
}
Example #2
0
/*
 *  Insert a new key in a binary search tree.  If key is a duplicate, 
 *  there is no insertion.
 *  Pre:  rootp points to the root node of a binary search tree
 *  Post: Tree returned includes new key and retains binary
 *        search tree properties.
 */
tree_node_t *
tree_insert(tree_node_t *rootp,   /* input/output - root node of 
                                     binary search tree    */
            int          new_key) /* input - key to insert */
{
      if (rootp == NULL) {             /* Simple Case 1 - Empty tree   */
            rootp = TYPED_ALLOC(tree_node_t);
            rootp->key = new_key;
            rootp->leftp = NULL;
            rootp->rightp = NULL;
      } else if (new_key == rootp->key) {             /* Simple Case 2 */
            /* duplicate key - no insertion                            */
      } else if (new_key < rootp->key) {              /* Insert in     */
            rootp->leftp = tree_insert                /* left subtree  */
                             (rootp->leftp, new_key);
      } else {                  /* Insert in right subtree */
            rootp->rightp = tree_insert(rootp->rightp,
                                        new_key);
      }

      return (rootp);
}