# To be used with
#    sel_universal_ppapi_replay_prolog.stdin
# define a bunch of variables for readability

set_variable MODULE i(4444)
set_variable INSTANCE i(5555)
# PP_Size
set_variable IMG_FMT  R(8,4:400,4:400)
set_variable IMG_HANDLE i(7)
set_variable GRAPHICS_HANLDE i(8)
# PP_ImageDataDesc
set_variable IMG_FMT2 R(16,4:0,4:400,4:400,4:1600)
# image size is width x height x 4-byte-pixel
set_variable IMG_SIZE 640000
# PP_Size
set_variable GRAPHICS_FMT  R(8,4:400,4:400)

echo
echo "*** INIT MODULE"
replay 1 PPB_GetInterface:s:i  s("PPB_Core;1.0") * i(1)
replay 1 PPB_GetInterface:s:i  s("PPB_Instance;1.0") * i(1)
replay 1 PPB_GetInterface:s:i  s("PPB_ImageData;1.0") * i(1)
replay 1 PPB_GetInterface:s:i  s("PPB_Graphics2D;1.0") * i(1)
# The results contain a process id which is non-determinisitic. The
# 'hide-results' option suppresses this output to help with golden file.
rpc PPP_InitializeModule hide-results i(0) ${MODULE} h(pepper_desc) s("${service_string}") * i(0) i(0)

echo
echo "*** INIT INSTANCE"
set_variable TAGS C(6,color\000)
set_variable VALUES C(5,0xaa\000)

# The PPP_GetInterface() call is probably not necessary, we just emulate what
# happens in real life
rpc PPP_GetInterface s("PPP_Instance;1.0") * i(0)
rpc PPP_Instance_DidCreate ${INSTANCE} i(1) ${TAGS} ${VALUES} * i(0)

echo
echo "*** SETTTING UP VIDEO MEMORY"

# video size is image size rounded up to 64k
shmem video_handle video_address 655360
memset ${video_address} 0  ${IMG_SIZE} 0
checksum ${video_address} 0 ${IMG_SIZE}

echo
echo "*** TRIGGER REPAINT"
replay 1 PPB_Core_AddRefResource:i: ${GRAPHICS_HANLDE} *
replay 1 PPB_ImageData_Create:iiCi:i ${INSTANCE} i(0) ${IMG_FMT} i(1) * ${IMG_HANDLE}
replay 1 PPB_ImageData_Describe:i:Chii ${IMG_HANDLE} * ${IMG_FMT2} h(video_handle) i(${IMG_SIZE}) i(1)
replay 1 PPB_Graphics2D_Create:iCi:i ${INSTANCE} ${GRAPHICS_FMT} i(0) * ${GRAPHICS_HANLDE}
replay 1 PPB_Instance_BindGraphics:ii:i ${INSTANCE} ${GRAPHICS_HANLDE} * i(1)
replay 1 PPB_Graphics2D_ReplaceContents:ii:  ${GRAPHICS_HANLDE}  ${IMG_HANDLE} *
replay 1 PPB_Graphics2D_Flush:ii:i ${GRAPHICS_HANLDE} i(1) * i(-1)
replay 1 ReleaseResourceMultipleTimes:ii:  ${IMG_HANDLE} i(1) *
replay 1 PPB_Core_ReleaseResource:i:  ${GRAPHICS_HANLDE} *
rpc PPP_Instance_DidChangeView ${INSTANCE} I(4,8,79,400,400) I(4,0,0,400,400) *

echo
echo "*** CHECKING MEMORY"
checksum ${video_address} 0 ${IMG_SIZE}

rpc PPP_ShutdownModule *