Home | History | Annotate | Download | only in c
      1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  */
      5 
      6 /* From ppb_core.idl modified Mon Mar 19 12:02:10 2012. */
      7 
      8 #ifndef PPAPI_C_PPB_CORE_H_
      9 #define PPAPI_C_PPB_CORE_H_
     10 
     11 #include "ppapi/c/pp_bool.h"
     12 #include "ppapi/c/pp_completion_callback.h"
     13 #include "ppapi/c/pp_macros.h"
     14 #include "ppapi/c/pp_resource.h"
     15 #include "ppapi/c/pp_stdint.h"
     16 #include "ppapi/c/pp_time.h"
     17 
     18 #define PPB_CORE_INTERFACE_1_0 "PPB_Core;1.0"
     19 #define PPB_CORE_INTERFACE PPB_CORE_INTERFACE_1_0
     20 
     21 /**
     22  * @file
     23  * This file defines the <code>PPB_Core</code> interface defined by the browser
     24  * and containing pointers to functions related to memory management, time, and
     25  * threads.
     26  */
     27 
     28 
     29 /**
     30  * @addtogroup Interfaces
     31  * @{
     32  */
     33 /**
     34  * The <code>PPB_Core</code> interface contains pointers to functions related
     35  * to memory management, time, and threads on the browser.
     36  *
     37  */
     38 struct PPB_Core_1_0 {
     39   /**
     40    *
     41    * AddRefResource() adds a reference to a resource.
     42    *
     43    * @param[in] config A <code>PP_Resource</code> corresponding to a
     44    * resource.
     45    */
     46   void (*AddRefResource)(PP_Resource resource);
     47   /**
     48    * ReleaseResource() removes a reference from a resource.
     49    *
     50    * @param[in] config A <code>PP_Resource</code> corresponding to a
     51    * resource.
     52    */
     53   void (*ReleaseResource)(PP_Resource resource);
     54   /**
     55    * GetTime() returns the "wall clock time" according to the
     56    * browser.
     57    *
     58    * @return A <code>PP_Time</code> containing the "wall clock time" according
     59    * to the browser.
     60    */
     61   PP_Time (*GetTime)(void);
     62   /**
     63    * GetTimeTicks() returns the "tick time" according to the browser.
     64    * This clock is used by the browser when passing some event times to the
     65    * module (e.g. using the <code>PP_InputEvent::time_stamp_seconds</code>
     66    * field). It is not correlated to any actual wall clock time
     67    * (like GetTime()). Because of this, it will not run change if the user
     68    * changes their computer clock.
     69    *
     70    * @return A <code>PP_TimeTicks</code> containing the "tick time" according
     71    * to the browser.
     72    */
     73   PP_TimeTicks (*GetTimeTicks)(void);
     74   /**
     75    * CallOnMainThread() schedules work to be executed on the main module thread
     76    * after the specified delay. The delay may be 0 to specify a call back as
     77    * soon as possible.
     78    *
     79    * The <code>result</code> parameter will just be passed as the second
     80    * argument to the callback. Many applications won't need this, but it allows
     81    * a module to emulate calls of some callbacks which do use this value.
     82    *
     83    * <strong>Note:</strong> CallOnMainThread, even when used from the main
     84    * thread with a delay of 0 milliseconds, will never directly invoke the
     85    * callback.  Even in this case, the callback will be scheduled
     86    * asynchronously.
     87    *
     88    * <strong>Note:</strong> If the browser is shutting down or if the module
     89    * has no instances, then the callback function may not be called.
     90    *
     91    * @param[in] delay_in_milliseconds An int32_t delay in milliseconds.
     92    * @param[in] callback A <code>PP_CompletionCallback</code> callback function
     93    * that the browser will call after the specified delay.
     94    * @param[in] result An int32_t that the browser will pass to the given
     95    * <code>PP_CompletionCallback</code>.
     96    */
     97   void (*CallOnMainThread)(int32_t delay_in_milliseconds,
     98                            struct PP_CompletionCallback callback,
     99                            int32_t result);
    100   /**
    101    * IsMainThread() returns true if the current thread is the main pepper
    102    * thread.
    103    *
    104    * This function is useful for implementing sanity checks, and deciding if
    105    * dispatching using CallOnMainThread() is required.
    106    *
    107    * @return A <code>PP_Bool</code> containing <code>PP_TRUE</code> if the
    108    * current thread is the main pepper thread, otherwise <code>PP_FALSE</code>.
    109    */
    110   PP_Bool (*IsMainThread)(void);
    111 };
    112 
    113 typedef struct PPB_Core_1_0 PPB_Core;
    114 /**
    115  * @}
    116  */
    117 
    118 #endif  /* PPAPI_C_PPB_CORE_H_ */
    119 
    120