From: Valerio Valerio Date: Thu, 11 Mar 2010 01:52:56 +0000 (+0000) Subject: turn app into a control panel applet X-Git-Url: http://git.maemo.org/git/?p=bootcreen;a=commitdiff_plain;h=3e0f4aeed607cbe419575681d877a4ea0b34689f turn app into a control panel applet --- diff --git a/data/icons/48x48/bootscreen_48.png b/data/icons/48x48/bootscreen_48.png new file mode 100644 index 0000000..26756ec Binary files /dev/null and b/data/icons/48x48/bootscreen_48.png differ diff --git a/data/icons/64x64/bootscreen_64.png b/data/icons/64x64/bootscreen_64.png new file mode 100644 index 0000000..68a2dd0 Binary files /dev/null and b/data/icons/64x64/bootscreen_64.png differ diff --git a/plugin/Makefile b/plugin/Makefile new file mode 100644 index 0000000..a957373 --- /dev/null +++ b/plugin/Makefile @@ -0,0 +1,201 @@ +############################################################################# +# Makefile for building: libbooscreentpanelplugin.so +# Generated by qmake (2.01a) (Qt 4.6.2) on: Wed Mar 10 23:50:49 2010 +# Project: plugin.pro +# Template: lib +# Command: /usr/bin/qmake -unix -o Makefile plugin.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_GL_NO_SCISSOR_TEST -DQT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH=1024 -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -DMAEMO_CHANGES -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/dbus-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/dbus-1.0/include -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -pipe -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -DMAEMO_CHANGES -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/dbus-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/dbus-1.0/include -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/linux-g++-maemo5 -I. -I/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/include/QtCore -I/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/include/QtGui -I/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/include -I. +LINK = g++ +LFLAGS = -Wl,-rpath-link,/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -Wl,-rpath,/opt/qt4-maemo5/lib -shared +LIBS = $(SUBLIBS) -L/opt/qt4-maemo5/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgmodule-2.0 -losso -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lglib-2.0 -lQtGui -L/opt/qt4-maemo5/lib -L/usr/X11R6/lib -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = plugin.c +OBJECTS = plugin.o +DIST = /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/unix.conf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/linux.conf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/qconfig.pri \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_pre.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/release.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/link_pkgconfig.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/moc.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/resources.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/uic.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/lex.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/include_source_dir.prf \ + plugin.pro +QMAKE_TARGET = booscreentpanelplugin +DESTDIR = +TARGET = libbooscreentpanelplugin.so +TARGETD = libbooscreentpanelplugin.so + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + -$(DEL_FILE) $(TARGET) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + + + +Makefile: plugin.pro /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/linux-g++-maemo5/qmake.conf /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/unix.conf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/linux.conf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/qconfig.pri \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_pre.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/release.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/link_pkgconfig.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/moc.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/resources.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/uic.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/lex.prf \ + /targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/include_source_dir.prf \ + /opt/qt4-maemo5/lib/libQtGui.prl \ + /opt/qt4-maemo5/lib/libQtCore.prl + $(QMAKE) -unix -o Makefile plugin.pro +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/unix.conf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/common/linux.conf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/qconfig.pri: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_functions.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt_config.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/exclusive_builds.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_pre.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/release.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/default_post.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/link_pkgconfig.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/warn_on.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/qt.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/unix/thread.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/moc.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/resources.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/uic.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/yacc.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/lex.prf: +/targets/FREMANTLE_ARMEL/opt/qt4-maemo5/mkspecs/features/include_source_dir.prf: +/opt/qt4-maemo5/lib/libQtGui.prl: +/opt/qt4-maemo5/lib/libQtCore.prl: +qmake: FORCE + @$(QMAKE) -unix -o Makefile plugin.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/booscreentpanelplugin1.0.0 || $(MKDIR) .tmp/booscreentpanelplugin1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/booscreentpanelplugin1.0.0/ && $(COPY_FILE) --parents plugin.c .tmp/booscreentpanelplugin1.0.0/ && (cd `dirname .tmp/booscreentpanelplugin1.0.0` && $(TAR) booscreentpanelplugin1.0.0.tar booscreentpanelplugin1.0.0 && $(COMPRESS) booscreentpanelplugin1.0.0.tar) && $(MOVE) `dirname .tmp/booscreentpanelplugin1.0.0`/booscreentpanelplugin1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/booscreentpanelplugin1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + +####### Compile + +plugin.o: plugin.c + $(CC) -c $(CFLAGS) $(INCPATH) -o plugin.o plugin.c + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/plugin/bootscreenplugin.pro.user b/plugin/bootscreenplugin.pro.user new file mode 100644 index 0000000..e0a3b7e --- /dev/null +++ b/plugin/bootscreenplugin.pro.user @@ -0,0 +1,156 @@ + + + + RunConfiguration0-Arguments + + + + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-Executable + + + + RunConfiguration0-RunConfiguration.name + Custom Executable + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserName + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-WorkingDirectory + $BUILDDIR + + + RunConfiguration0-type + ProjectExplorer.CustomExecutableRunConfiguration + + + activeRunConfiguration + 0 + + + activebuildconfiguration + Debug + + + buildConfiguration-Debug + + Debug + 0 + 0 + 2 + + + + buildConfiguration-Release + + Release + 0 + 0 + + + + buildconfiguration-Debug-buildstep0 + + Debug + + + + buildconfiguration-Debug-buildstep1 + + Debug + + + + buildconfiguration-Debug-cleanstep0 + + Debug + true + + clean + + + + + buildconfiguration-Release-buildstep0 + + Release + + + + buildconfiguration-Release-buildstep1 + + Release + + + + buildconfiguration-Release-cleanstep0 + + Release + + + + buildconfigurations + + Debug + Release + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + + + diff --git a/plugin/libbooscreentpanelplugin.so b/plugin/libbooscreentpanelplugin.so new file mode 100755 index 0000000..8ecf7e9 Binary files /dev/null and b/plugin/libbooscreentpanelplugin.so differ diff --git a/plugin/plugin.c b/plugin/plugin.c new file mode 100644 index 0000000..3fb49ce --- /dev/null +++ b/plugin/plugin.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include +#include +#include + +static const char binary[] = "/usr/bin/bootscreen"; + +osso_return_t execute(osso_context_t *osso_context, gpointer parent, gboolean user_activated) +{ + char args[sizeof(binary) + 64]; + Window id = None; + + (void) osso_context; + + if (parent && GTK_WIDGET(parent) && GTK_WIDGET(parent)->window) + id = gdk_x11_drawable_get_xid(GTK_WIDGET(parent)->window); + + sprintf(args, "sudo %s --parent 0x%08x", binary, (unsigned int) id); + return system(args); +} + +osso_return_t save_state(osso_context_t *osso_context, gpointer parent) +{ + (void) osso_context; + (void) parent; + + return OSSO_OK; +} diff --git a/plugin/plugin.o b/plugin/plugin.o new file mode 100644 index 0000000..e985204 Binary files /dev/null and b/plugin/plugin.o differ diff --git a/plugin/plugin.pro b/plugin/plugin.pro new file mode 100644 index 0000000..e936573 --- /dev/null +++ b/plugin/plugin.pro @@ -0,0 +1,6 @@ +TEMPLATE = lib +SOURCES = plugin.c +TARGET = booscreentpanelplugin + +CONFIG += plugin link_pkgconfig +PKGCONFIG += gtk+-2.0 libosso diff --git a/plugin/plugin.pro.user b/plugin/plugin.pro.user new file mode 100644 index 0000000..e0a3b7e --- /dev/null +++ b/plugin/plugin.pro.user @@ -0,0 +1,156 @@ + + + + RunConfiguration0-Arguments + + + + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-Executable + + + + RunConfiguration0-RunConfiguration.name + Custom Executable + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserName + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-WorkingDirectory + $BUILDDIR + + + RunConfiguration0-type + ProjectExplorer.CustomExecutableRunConfiguration + + + activeRunConfiguration + 0 + + + activebuildconfiguration + Debug + + + buildConfiguration-Debug + + Debug + 0 + 0 + 2 + + + + buildConfiguration-Release + + Release + 0 + 0 + + + + buildconfiguration-Debug-buildstep0 + + Debug + + + + buildconfiguration-Debug-buildstep1 + + Debug + + + + buildconfiguration-Debug-cleanstep0 + + Debug + true + + clean + + + + + buildconfiguration-Release-buildstep0 + + Release + + + + buildconfiguration-Release-buildstep1 + + Release + + + + buildconfiguration-Release-cleanstep0 + + Release + + + + buildconfigurations + + Debug + Release + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + + + diff --git a/src/bootscreen.pro b/src/bootscreen.pro deleted file mode 100644 index 5d5de4a..0000000 --- a/src/bootscreen.pro +++ /dev/null @@ -1,20 +0,0 @@ -TARGET = bootscreen - -HEADERS += bootscreen.h \ - bootscreenR.h -SOURCES += bootscreen.cpp \ - main.cpp \ - bootscreenR.cpp -QT += maemo5 - - -install_app.commands = $(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)/opt/bootscreen/$(QMAKE_TARGET) -install_cfg.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).conf $(DESTDIR)/opt/bootscreen/$(QMAKE_TARGET).conf -install_dsk.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).desktop $(DESTDIR)/usr/share/applications/hildon/$(QMAKE_TARGET).desktop -install_sd.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).sudoers $(DESTDIR)/etc/sudoers.d/$(QMAKE_TARGET).sudoers -install_evd.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET) $(DESTDIR)/etc/event.d/$(QMAKE_TARGET) -install_scr.commands = $(INSTALL_FILE) script/$(QMAKE_TARGET) $(DESTDIR)/usr/bin/$(QMAKE_TARGET) -install_i48.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET)_48.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/$(QMAKE_TARGET).png -install_i64.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET)_64.png $(DESTDIR)/usr/share/icons/hicolor/64x64/apps/$(QMAKE_TARGET).png -install.depends = $(TARGET) install_app install_dsk install_sd install_evd install_scr install_i48 install_i64 -QMAKE_EXTRA_TARGETS += install install_app install_dsk install_sd install_evd install_scr install_i48 install_i64 diff --git a/src/src.pro b/src/src.pro new file mode 100644 index 0000000..5d5de4a --- /dev/null +++ b/src/src.pro @@ -0,0 +1,20 @@ +TARGET = bootscreen + +HEADERS += bootscreen.h \ + bootscreenR.h +SOURCES += bootscreen.cpp \ + main.cpp \ + bootscreenR.cpp +QT += maemo5 + + +install_app.commands = $(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)/opt/bootscreen/$(QMAKE_TARGET) +install_cfg.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).conf $(DESTDIR)/opt/bootscreen/$(QMAKE_TARGET).conf +install_dsk.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).desktop $(DESTDIR)/usr/share/applications/hildon/$(QMAKE_TARGET).desktop +install_sd.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET).sudoers $(DESTDIR)/etc/sudoers.d/$(QMAKE_TARGET).sudoers +install_evd.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET) $(DESTDIR)/etc/event.d/$(QMAKE_TARGET) +install_scr.commands = $(INSTALL_FILE) script/$(QMAKE_TARGET) $(DESTDIR)/usr/bin/$(QMAKE_TARGET) +install_i48.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET)_48.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/$(QMAKE_TARGET).png +install_i64.commands = $(INSTALL_FILE) data/$(QMAKE_TARGET)_64.png $(DESTDIR)/usr/share/icons/hicolor/64x64/apps/$(QMAKE_TARGET).png +install.depends = $(TARGET) install_app install_dsk install_sd install_evd install_scr install_i48 install_i64 +QMAKE_EXTRA_TARGETS += install install_app install_dsk install_sd install_evd install_scr install_i48 install_i64